【问题标题】:Insert line break in postgresql when updating text field更新文本字段时在 postgresql 中插入换行符
【发布时间】:2014-10-29 19:07:16
【问题描述】:

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

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

我的预期结果是单元格将如下所示:

第一行 第二行

上述语法返回错误。

【问题讨论】:

  • 顺便说一句,Postgresql 中的字符串连接运算符是“||”。

标签: postgresql char sql-update


【解决方案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' 的默认值在 9.1+ 中为 'on'。

show standard_conforming_strings;

【讨论】:

  • 我使用了 CONCAT('Text 1' , chr(13), 'Text 2') 并且它有效。谢谢!
【解决方案2】:

使用文字换行符(如果 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;

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      PostgreSQL:

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

      正确:

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

      【讨论】:

        猜你喜欢
        • 2014-03-11
        • 2015-04-05
        • 2014-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 2014-10-16
        • 2012-05-19
        相关资源
        最近更新 更多