gpt4 book ai didi

sql - 转储 Postgresql 时转义文本内的引号

转载 作者:行者123 更新时间:2023-11-29 11:21:43 25 4
gpt4 key购买 nike

假设我的 table 是:

  id    text
+-----+----------+
123 | foo bar
321 | bar "baz"

有什么办法可以在转储时避开“baz”周围的那些引号吗?

我的查询是这样的:

SELECT text FROM aTable WHERE ...

我希望输出为:

foo bar
bar \"baz\"

而不是:

foo bar
bar baz

最佳答案

您可能想使用 replace :

SELECT REPLACE(text, '"', E'\\"') FROM aTable WHERE ...

您需要转义转义字符以获得文字反斜杠(因此是双反斜杠)并在替换字符串上使用“E”前缀以获得正确的 escape syntax .

更新:感谢 a_horse_with_no_name 一贯的严格(顺便说一句,这是一件好事),我们有一个不需要额外反斜杠或非标准“E”前缀的解决方案:

set standard_conforming_strings = on;
SELECT REPLACE(text, '"', '\"') FROM aTable WHERE ...

standard_conforming_strings选项告诉 PostgreSQL 对 SQL 字符串使用标准语法:

This controls whether ordinary string literals ('...') treat backslashes literally, as specified in the SQL standard.

这也会影响您的 \x5C escape :

If the configuration parameter standard_conforming_strings is off, then PostgreSQL recognizes backslash escapes in both regular and escape string constants. This is for backward compatibility with the historical behavior, where backslash escapes were always recognized.

关于sql - 转储 Postgresql 时转义文本内的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5785219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com