Подтвердить что ты не робот

Вставить разрыв строки в postgresql при обновлении текстового поля

Я пытаюсь обновить текстовое поле в таблице моей базы данных postgresql.

UPDATE public.table SET long_text = 'First Line' + CHAR(10) + 'Second line.' WHERE id = 19;

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

First Line
Second line

Вышеприведенный синтаксис возвращает ошибку.

4b9b3361

Ответ 1

Вы хотите chr(10) вместо char(10).

Будьте осторожны с этим, потому что это может быть неправильная новая строка. "Правая" новая строка зависит от клиента, который ее потребляет. Mac, Windows и Linux используют разные строки перевода. Браузер ожидает <br />.

Возможно, было бы безопаснее написать ваше обновление, подобное этому для PostgreSQL 9.1+. Но прочитайте документы, указанные ниже.

UPDATE public.table 
SET long_text = E'First Line\nSecond line.' 
WHERE id = 19;

Значение по умолчанию < standard_conforming_strings ''on' в 9.1 +.

show standard_conforming_strings;

Ответ 2

Используйте литерал новой строки (если standard_conforming_strings = on, т.е. вы находитесь на недавнем PostgreSQL):

UPDATE public.table 
SET long_text = 'First Line
Second line.' 
WHERE id = 19;

или вы можете использовать escape:

UPDATE public.table 
SET long_text = E'First Line\nSecond line.'
WHERE id = 19;

Ответ 3

В моей версии postgres\n не работает для разрыва строки, и вместо этого я использовал \r\n, например:

UPDATE public.table 
SET long_text = E'First Liner\r\nSecond line.'
WHERE id = 19;