JavaでPostgreSQLの?演算子を使用するために
at 2016-02-25 02:08 (UTC)
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';
としてやればよい。