2

我有一个表“temp”,它有两个属性:整数、文本[]。

我想在数组内插入一条带有大括号的记录。例如这样的记录:

1, {'1{c}1','a'} 

其中 1 是整数,“1{c}1”是数组的第一个元素,“a”是数组的第二个元素。

我尝试了这样的简单插入:

INSERT INTO temp VALUES (id, '{'1{c}1','a'}'); 

但它说这是格式错误的。

4

3 回答 3

3

此外,还可以使用数组构造函数,我认为使用起来更安全,因为数组元素只是 SQL 常量,您也可以在数组构造函数中使用表达式:

insert into "temp" values(1, array['1{c}1','a']); 

很明显这是字符串数组,这也是

insert into "temp" values(1, array['1','2']); 
于 2013-08-26T04:54:25.063 回答
2

根据数组的 PostgreSQL 文档

您可以在任何元素值周围加上双引号,如果它包含逗号或花括号,则必须这样做。

正确的语法应该是这样的:

INSERT INTO "temp" VALUES (1, '{"1{c}1",a}'); 

您可以在 SQL fiddle 上看到一个完整的工作示例。

于 2013-08-25T23:34:03.370 回答
0

你不想要那些内部单引号。

INSERT INTO temp VALUES (id, '{1{c}1,a}'); 
于 2013-08-25T22:56:30.710 回答