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

ale*_*yes 38 postgresql char sql-update

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

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

我的预期结果是单元格看起来像这样:

First Line
Second line

上面的语法返回错误.

Mik*_*ll' 57

你想要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;
Run Code Online (Sandbox Code Playgroud)

' standard_conforming_strings ' 的默认值在9.1+中为'on'.

show standard_conforming_strings;
Run Code Online (Sandbox Code Playgroud)

  • 我使用了CONCAT('Text 1',chr(13),'Text 2')并且它有效.谢谢! (3认同)

Cra*_*ger 24

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

UPDATE public.table 
SET long_text = 'First Line
Second line.' 
WHERE id = 19;
Run Code Online (Sandbox Code Playgroud)

或者你可以使用逃脱:

UPDATE public.table 
SET long_text = E'First Line\nSecond line.'
WHERE id = 19;
Run Code Online (Sandbox Code Playgroud)


Mar*_*uni 6

在我的 postgres 版本中,\n 不适用于换行符,我使用 \r\n 代替,如下所示:

UPDATE public.table 
SET long_text = E'First Liner\r\nSecond line.'
WHERE id = 19;
Run Code Online (Sandbox Code Playgroud)


RoC*_*uCk 5

PostgreSQL:

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

更正:

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