PgSQLで配列変数
Postgresで配列変数を使えるのはいいけど、PHPでselectして読んでもarrayにはならない。
DATABASE=> select hoge from fuga;
hoge
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
{foo,bar}
これをpg_query()で読むと"{foo,bar}"という文字列になる。
特定の要素を取得するときは
select hoge[1] from fuga;
で良いけど、そもそも要素数が不定だからこそDBで配列変数を使いたいわけで・・・
というわけで、リテラル文字列"{foo,bar}"を分解する関数を作ろうと思ったのですが、
PHPからのアクセスに限定すればserialize()関数で全て解決する模様。
ただし、
- serialize()が任意の型をサポートするために文字列のサイズがやたら長くなる
- PHP以外で読もうとするとかえって厳しくなる
ということで、ゆくゆくはPostgres配列用をPHP配列に変換する関数でも作ろうと思いまする。
構想としては
- {から}までを配列とみなして取り出す
- ","をデリミタにしてsplit()
難しくなさそうだけど面倒だなぁ・・・
どこかに落ちてないかなあ(他力本願主義)
・・・ありました。
ここに。
さて仕事しよ。