私のPostgreSQLデータベースで、json列に特定のテキストが含まれている行を検索しようとしています。Postgresql:オブジェクトのjson配列内のテキストで行を検索
行スキーマ:
id | name | subitems
-----------------------------------------------------------------
1 | "item 1" | [{name: 'Subitem A'}, {name: 'Subitem B'}]
2 | "item 2" | [{name: 'Subitem C'}, {name: 'Subitem D'}]
私は、クエリの結果たかった 'サブアイテムB'
id | name | subitems
-----------------------------------------------------------------
1 | "item 1" | [{name: 'Subitem A'}, {name: 'Subitem B'}]
私はこのような最初のサブアイテムを検索することができ
:
WHERE lower(subitems->0->>\'name\') LIKE '%subitem a%'
しかし、明らかに私他の副題を見つけることはできませんが、最初のものはこのようになります。
私は私のサブ項目のすべての名前を取得することができます
SELECT lower(json_array_elements(subitems)->>'name') FROM ...
をしかし、それは私の名を含む2行います:私は実際にアイテムを含む1行で必要なもの
lower
----------------------------------------------------------------
"subitem a"
"subitem b"
を。
どのようにすればいいのですか?
あなたが探しているものは少し不明です - あなたにいくつかの例のデータと、あなたが望む出力の例も教えてください。 – jmelesky
返信いただきありがとうございます、私の質問を更新しました – Jesse