• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:XML型に対する問い合わせ)

XML型に対する問い合わせ方法

このQ&Aのポイント
  • XML型を持つレコードから特定の条件で検索する方法を教えてください。
  • XML型の中の要素の値を比較して、特定の条件を満たすレコードを取得する方法を教えてください。
  • xpathを使用して、XML型の中の要素を抽出し、特定の条件を満たすレコードを検索する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada59
  • ベストアンサー率74% (29/39)
回答No.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 行)

taka2063
質問者

お礼

yamada59さん、回答ありがとうございます。 そのような指定でできるのですね。 andがxpath()で使える記述は見つけていたのですが自分で指定するとエラーになりサンプルも見つけられず悩んでいました。 ただ、array_length()はバージョン9以降のようで現状自分のサーバ(v8)で関数が無いとエラーになりました。 少しだけアレンジして次のように直しましたら、今のバージョンでも(1)のレコードだけ検索できました。 SELECT * FROM test WHERE xpath('/a/b[c="1" and d="1"]', xml)::text[]<>'{}'

すると、全ての回答が全文表示されます。

専門家に質問してみよう