gpt4 book ai didi

sql - PostgreSQL 字符串转义设置

转载 作者:行者123 更新时间:2023-11-29 11:26:38 24 4
gpt4 key购买 nike

我有 2 个服务器:S1S2 具有相同的 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"}`)

现在 S2 工作了,但是 S1 说:

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 已启用,因此 \ 不能用作转义单引号。

关于sql - PostgreSQL 字符串转义设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812597/

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