PostgreSQL で jsonb 型のカラムの一部を検索条件にする方法
- POST
PostgreSQL で jsonb 型のカラムの一部を検索条件にする方法を備忘録として残しておく
詳細は公式を参照
方法 以下の DB 構成およびレコードの場合
Books Table id field: SERIAL type ※Primary Key value1: 1 value2: 2 options field: JSONB type value1: {“key_1”: “aaa”, “key_2”: “bbb”} value2: {“key_1”: “ccc”, “key_2”: “ddd”} SELECT options->>'key_2' FROM books WHERE options->>'key_1' = 'ccc'; #=> 'ddd' 以下の DB 構成およびレコードの場合(配列)
Books Table id field: SERIAL type ※Primary Key value1: 1 value2: 2 options field: JSONB type value: [{“key_1”: “aaa”, “key_2”: “bbb”}, {“key_1”: “ccc”, “key_2”: “ddd”}] value: [{“key_1”: “eee”, “key_2”: “fff”}, {“key_1”: “ggg”, “key_2”: “hhh”}] SELECT options->>'key_2' FROM books, JSONB_ARRAY_ELEMENTS(options) option WHERE option->>'key_1' = 'ccc'; #=> 'ddd'