2013-08-25 58 views
2

我有一個表「temp」具有兩個屬性:integer,text []。陣列內的大括號 - postgresql

我想用大括號插入數組中的記錄。 例如像這樣的記錄:

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

其中1是整數,且「1 {C} 1」是陣列和「a」的陣列的第二元件的第一元件。

我嘗試了簡單地插入這樣的:

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

,但它說,格式不正確。

回答

2

按照PostgreSQL documentation for arrays

你可以把雙引號的任何元素的值,而且必須這樣做,如果它包含逗號或者花括號。

正確的語法將是這樣的:

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

你可以看到一個完整的,工作example on SQL fiddle

+0

謝謝馬克。 – DarkCoffee

+3

你也可以對數組使用'array ['1 {c} 1','a']'表示法,這樣引用更少的麻煩。 –

0

你不想要那些內在的單引號。

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

但是如果我想要? – DarkCoffee

3

作爲補充,它也可以使用數組構造函數,我認爲這是更安全的使用,因爲數組元素只是SQL常數,你也可以使用數組構造函數內的表達式:

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

它清楚這是一串字符串,而且這也是

insert into "temp" values(1, array['1','2']);