2016/02/25

JavaでPostgreSQLの?演算子を使用するために

PostgreSQL には ? という演算子があって、JSONB型に対して文字列の検索が行える。

-- true を返す
SELECT '["a", "b", "c"]' ? 'a';

-- 管理者検索
SELECT *
FROM users
WHERE roles ? 'ADMIN';
といった使い方ができる。

ところが、例えば DOMA のようなフレームワークやバックエンドでJDBCを使っているツールなどではエラーとなる。

これを避けるためには ? をエスケープしてやればよくて、

-- true を返す
SELECT '["a", "b", "c"]' ?? 'a';

-- 管理者検索
SELECT *
FROM users
WHERE roles ?? 'ADMIN';
としてやればよい。

0 件のコメント :

コメントを投稿