更新文本字段时在postgresql中插入换行符

时间:2014-10-29 19:07:16

标签: postgresql char sql-update

我正在尝试更新postgresql数据库表格中的文本字段。

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

我的预期结果是细胞看起来像这样:

First Line
Second line

以上语法会返回错误。

4 个答案:

答案 0 :(得分:50)

您希望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”的默认值在9.1 +中为“开启”。

show standard_conforming_strings;

答案 1 :(得分:24)

使用文字换行符(如果standard_conforming_strings = on,即你最近的PostgreSQL):

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

或者您可以使用转义:

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

答案 2 :(得分:3)

在我的postgres版本中,\ n没有用于换行符,而是使用\ r \ n来代替,如下所示:

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

答案 3 :(得分:0)

PostgreSQL:

varchar + varchar =错误。 \ r和\ n在任何地方都不起作用,为了更大的兼容性使用:

Corret:

UPDATE public.table SET 
   long_text = concat('First Line',CHR(13),CHR(10),'Second line.')
WHERE id = 19;