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 件のコメント :
コメントを投稿