我有 2 台服务器:S1
, S2
与相同的SELECT version()
使用相同的数据库test
包含一个表t1
具有类型的列text[]
.
我尝试插入 2 个带有符号的字符串数组"
其中之一:
INSERT into t1 (columnname) VALUES (`{"str1", "str2\"with quote symbol"}`)
S1
效果很好,但是S2
抛出错误:
ERROR: malformed array literal: "{"str1", "str2"with quote symbol"}"
让我们再添加一个\
根据请求:
INSERT into t1 (columnname) VALUES (`{"str1", "str2\\"with quote symbol"}`)
Now S2
有效,但是S1
says:
ERROR: malformed array literal: "{"str1", "str2\\"with quote symbol"}"
postgres 中是否有一些转义设置?
服务器是通过 2 个独立的 pgbouncer 实例访问的,但我认为这与问题无关。
在(标准)SQL 中转义单引号是通过使用两个单引号来完成的,例如
'Peter''s house'
我更喜欢使用显式的ARRAY[..]
这还需要少一个引用,因此您的插入内容可以写为:
INSERT into t1 (columnname)
VALUES (ARRAY['str1', 'str2''with quote symbol']);
在9.1之前的版本Postgres允许使用\
作为替代转义字符,但如果使用的话会记录警告。从9.1开始配置参数standard_conforming_strings
已启用,因此\
不能用作转义单引号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)