2015-10-25 154 views
8

我怎樣寫和執行使用libpqxx其插入陣列值的查詢?插入數組值

INSERT INTO exampleTable(exampleArray[3]) VALUES('{1, 2, 3}'); 

此示例代碼給我:

ERROR: syntax error at or near "'" 

有什麼不對?在PostgreSQL文檔,我發現:

CREATE TABLE sal_emp (
name   text, 
pay_by_quarter integer[], 
schedule  text[][] 
); 

...

INSERT INTO sal_emp 
VALUES ('Bill', 
'{10000, 10000, 10000, 10000}', 
'{{"meeting", "lunch"}, {"training", "presentation"}}'); 
+0

什麼是'examplearray的類型'? – klin

+0

@klin這是smallint,但沒關係 –

+0

當然這很重要。您的查詢在文本數組列上在語法上是正確的。 – klin

回答

5

您應該使用列名沒有索引插入一個數組:

create table example(arr smallint[]); 
insert into example(arr) values('{1, 2, 3}'); 
select * from example; 

    arr 
--------- 
{1,2,3} 
(1 row) 

使用列名和索引存取的表的一個元素:

update example set arr[2] = 10; 
select * from example; 

    arr  
---------- 
{1,10,3} 
(1 row) 

您可以使用INSERTarr[n]但是這具有特殊的意義。使用此語法可以創建與來自給定數量的索引一個元素的數組:

delete from example; 
insert into example(arr[3]) values (1); 
select * from example; 

    arr  
----------- 
[3:3]={1} 
(1 row) 

結果你有一個陣列,其下限爲3:

select arr[3] from example; 
arr 
----- 
    1 
(1 row) 
+0

它的工作原理,謝謝。我試過「[]」,「[3]」,「'」,沒有「'」,但我沒有嘗試沒有「[]」。 –