Удалить пробелы из postgresql столбцов базы данных не работает - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь удалить пропущенный текст в моей базе данных PostgreSQL, но все, что я пытаюсь сделать, похоже, не работает.

Я пробовал:

UPDATE posts SET caption = TRIM(caption)

UPDATE posts SET caption = TRIM(regexp_replace(caption, '\s+', ' ', 'g'))

Ни один из них не сработал. Должно быть, я искал и пробовал несколько других вещей, но безуспешно.

Я использую node- postgres в приложении express для выполнения вызовов API для получения моих данных. После обновления и возврата данных через API я получаю следующие результаты:

enter image description here

Стоит отметить, что если я сделаю это:

SELECT TRIM(TRAILING FROM caption)...

Это удалит завершающий пробел. (да, я тоже пробовал это в операторе обновления.)

Есть ли что-то еще, что я могу попробовать?

Я хочу избежать добавления TRIM во все мои столбцы, которые нужны, когда их очень много.

1 Ответ

0 голосов
/ 19 февраля 2020

Ваши символы «пробел» могут быть символами вертикальной табуляции, которые AFAIK не являются символами «пробела».

Попробуйте использовать расширенные символы в обычной функции replace():

update posts set caption  = trim(replace(replace(replace(caption, E'\v', ''), E'\n', ''), E'\r', '')))

или регулярное выражение:

update posts set caption = trim(regexp_replace(caption, '[\n\r\v\f\t]', '', 'g'))

Если это не сработает, попробуйте проверить каждый байт своего значения, чтобы точно узнать, какие там символы:

select encode(caption::bytea, 'hex') -- display each character as hex
...