Вставить разрыв строки в postgresql при обновлении текстового поля
Я пытаюсь обновить текстовое поле в таблице моей базы данных postgresql.
UPDATE public.table SET long_text = 'First Line' + CHAR(10) + 'Second line.' WHERE id = 19;
Мой предполагаемый результат состоит в том, что ячейка будет выглядеть так:
First Line
Second line
Вышеприведенный синтаксис возвращает ошибку.
Ответы
Ответ 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;