PostgreSQL json配列内で条件に一致した最初の値を取得する
- 作成日 2022.12.11
- PostgreSQL
- PostgreSQL
PostgreSQLで、json配列内で条件に一致した最初の値を取得する手順を記述してます。「jsonb_path_query_first」に条件を指定することで可能です。jsonデータにも使用することができます。
環境
- OS CentOS Stream release 9
- PostgreSQL 15.1
- pgadmin4 6.16
条件に一致した最初の値を取得
条件に一致した最初の値を取得するには、「jsonb_path_query_first」を使用します。
jsonb_path_query_first(json配列,条件);
※条件に一致する値がなければ「null」が返ります。
実際に、実行してみます。
SELECT
jsonb_path_query_first('[1, 2, 3, 4, 5]', '$[*] ? (@ > 3)'),
jsonb_path_query_first('[1, 2, 3, 4, 5]', '$[*] ? (@ > 4)');
実行結果をみると、取得されていることが確認できます。
以下のように複数条件を指定することも可能です。
SELECT
jsonb_path_query_first('[1, 2, 3, 4, 5]', '$[*] ? (@ > 2 && @ < 5)'),
jsonb_path_query_first('[1, 2, 3, 4, 5]', '$[*] ? (@ > 1 && @ < 6)');
実行結果
変数にjsonを使用
変数に「json」データを使用することも可能です。
SELECT
jsonb_path_query_first('
[1, 2, 3, 4, 5]', '$[*] ? (@ > $x && @ < $y)',
'{"x": 2, "y": 4}'),
jsonb_path_query_first('
[1, 2, 3, 4, 5]', '$[*] ? (@ > $x && @ < $y)',
'{"x": 2, "y": 6}');
実行結果
jsonデータ
jsonデータに対しても使用することは可能です。
SELECT
jsonb_path_query_first('{"x": 1, "y": 2, "z": 3}', '$.* ? (@ > 1)'),
jsonb_path_query_first('{"x": 1, "y": 2, "z": 3}', '$.* ? (@ > 5)');
実行結果
-
前の記事
javascript スクロールした方向を取得する 2022.12.11
-
次の記事
Redis 全てのキーからランダムにキー名を取得する 2022.12.11
コメントを書く