web-dev-qa-db-ja.com

配列値の挿入

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"}}');
26
ktoś tam

配列を挿入するには、インデックスなしで列名を使用する必要があります。

create table example(arr smallint[]);
insert into example(arr) values('{1, 2, 3}');
-- alternative syntax
-- insert into example(arr) values(array[1, 2, 3]);

select * from example;

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

列名とインデックスを使用して、配列の単一の要素にアクセスします。

select arr[2] as "arr[2]"
from example;

 arr[2] 
--------
      2
(1 row)

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

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

INSERTarr[n]を使用できますが、これには特別な意味があります。この構文を使用すると、指定された番号からインデックス付けされた1つの要素を持つ配列を作成できます。

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)
21
klin