

環境：(PostgreSQL) 9.4.5

`SELECT ARRAY['foo', 'bar', 'hoge'] AS fuga;`

この配列から真ん中のbarだけ取得したい場合、どのようにすればいいのでしょうか

PHP感覚で

`SELECT ARRAY['foo', 'bar', 'hoge'][0] AS fuga;`

としたら

ERROR: "["またはその近辺で構文エラー

と怒られてしまいました・・・


CC BY-SA 3.0
2016-02-09T09:12:26.937
21896
2016-02-09T09:45:48.233
2016-02-09T09:45:48.233
8000
10704
question
sql postgresql
Postgresqlで配列型の値から特定の値を取得する方法。


確かに `[x]` で特定の要素を取り出すことができますが、

  * 単純な列名である場合などを除いて、配列を表す式は括弧で囲む必要があります  
参考： [4.2.3. 添字](http://www.postgresql.jp/document/9.4/html/sql-
expressions.html#SQL-EXPRESSIONS-SUBSCRIPTS)

  * 添字は1から始まります（範囲外の添字を指定するとNULLになります）  
参考： [8.15.3.
配列へのアクセス](http://www.postgresql.jp/document/9.4/html/arrays.html#ARRAYS-
ACCESSING)

ということで以下のようにすれば `bar` が取得できます。

[code]

    SELECT (ARRAY['foo', 'bar', 'hoge'])[2] AS fuga;
    
[/code]


CC BY-SA 3.0
2016-02-09T09:45:28.257
21900
2016-02-09T09:45:28.257
8000
21896
answer