- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML型に対する問い合わせ)
XML型に対する問い合わせ方法
このQ&Aのポイント
- XML型を持つレコードから特定の条件で検索する方法を教えてください。
- XML型の中の要素の値を比較して、特定の条件を満たすレコードを取得する方法を教えてください。
- xpathを使用して、XML型の中の要素を抽出し、特定の条件を満たすレコードを検索する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以下の SQL でどうでしょうか。 test=> SELECT * FROM test WHERE array_length(xpath('/a/b[c="1" and d="1"]', xml), 1) > 0; xml -------------------------- <a> + <b><c>1</c><d>1</d></b>+ </a> (1 行)
お礼
yamada59さん、回答ありがとうございます。 そのような指定でできるのですね。 andがxpath()で使える記述は見つけていたのですが自分で指定するとエラーになりサンプルも見つけられず悩んでいました。 ただ、array_length()はバージョン9以降のようで現状自分のサーバ(v8)で関数が無いとエラーになりました。 少しだけアレンジして次のように直しましたら、今のバージョンでも(1)のレコードだけ検索できました。 SELECT * FROM test WHERE xpath('/a/b[c="1" and d="1"]', xml)::text[]<>'{}'