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