首页 > 解决方案 > PSQL 为字符串添加换行符

问题描述

我在 PSQL 中有一个向特定用户发送电子邮件的函数。该函数接受一个电子邮件文本参数,并将其添加到电子邮件正文前后的一些常量文本中:

在这个函数中,我有一个 json_build_object 调用,它处理电子邮件的收件人、正文和标题:

jsonb_build_object(
            'recipient',recipient,
            'title',title,
            'message_text', 'some text before.
             some text on new line ' || body ||
            ' some text after.
             some text on new line.'
        )

我的问题是,在正文之前和之后的文本中,我无法将其格式化为单独的行。我尝试了以下方法,但没有奏效:

jsonb_build_object(
            'recipient',recipient,
            'title',title,
            'message_text', E'some text before.\n
             some text on new line \n' || body ||
            E'\nsome text after.\n
             some text on new line.'
        )

谁能告诉我我做错了什么?

标签: postgresql

解决方案


你做对了,结果在表单中有换行符\n。这就是 JSON 中文本中的换行符的外观。

RFC 8259 对此进行了描述:

字符串以引号开头和结尾。所有 Unicode 字符都可以放在引号内,除了必须转义的字符:引号、反斜线和控制字符(U+0000 到 U+001F)。

换行符是字符 U+000A,所以必须转义。

如果您想要未转义的换行符,请使用 JSON 以外的其他内容。


推荐阅读