メインコンテンツまでスキップ
に最終更新

XPATH_STRING

説明​

XPATH_STRING 関数は XML 文字列を解析し、XPath 式に一致する最初の XML ノードを返します。

ヒント

この関数はバージョン 3.0.6 以降でサポートされています。

構文​

XPATH_STRING(<xml_string>, <xpath_expression>)

パラメータ​

パラメータ説明
<xml_string>元の文字列。型: VARCHAR
<xpath_expression>XPath 式。型: VARCHAR

戻り値​

XPath 式に一致する最初の XML ノードの内容を VARCHAR 型で返します。XML 文字列が NULL の場合は NULL を返し、一致するノードがない場合は空文字列を返します。

特殊なケース:

  • XML または XPath の形式が正しくない場合はエラーが発生します。

例​

  1. 基本的なノードの値を抽出します。
SELECT xpath_string('<a>123</a>', '/a');
+-----------------------------------+
| xpath_string('<a>123</a>', '/a') |
+-----------------------------------+
| 123 |
+-----------------------------------+
  1. ネストした要素を抽出します。
SELECT xpath_string('<a><b>123</b></a>', '/a/b');
+--------------------------------------------+
| xpath_string('<a><b>123</b></a>', '/a/b') |
+--------------------------------------------+
| 123 |
+--------------------------------------------+
  1. 属性を使って抽出します。
SELECT xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]');
+----------------------------------------------------------+
| xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]') |
+----------------------------------------------------------+
| 123 |
+----------------------------------------------------------+
  1. 位置を指定する述語を使って抽出します。
SELECT xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]');
+----------------------------------------------------+
| xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]') |
+----------------------------------------------------+
| 2 |
+----------------------------------------------------+
  1. NULL を入力します。
SELECT xpath_string(NULL, '/a');
+--------------------------+
| xpath_string(NULL, '/a') |
+--------------------------+
| NULL |
+--------------------------+
  1. CDATA セクションの内容はプレーンテキストとして返されます。
SELECT xpath_string('<a><![CDATA[123]]></a>', '/a');
+----------------------------------------------+
| xpath_string('<a><![CDATA[123]]></a>', '/a') |
+----------------------------------------------+
| 123 |
+----------------------------------------------+
  1. XML コメントは無視されます。
SELECT xpath_string('<a><!-- comment -->123</a>', '/a');
+--------------------------------------------------+
| xpath_string('<a><!-- comment -->123</a>', '/a') |
+--------------------------------------------------+
| 123 |
+--------------------------------------------------+
  1. パスに一致するノードがない場合は空文字列を返します。
SELECT xpath_string('<a>123</a>', '/b');
+----------------------------------+
| xpath_string('<a>123</a>', '/b') |
+----------------------------------+
| |
+----------------------------------+
  1. XML の形式が正しくない場合はエラーが発生します。
SELECT xpath_string('<a><!-- comment -->123/a>', '/a');
ERROR 1105 (HY000): errCode = 2, detailMessage = [INVALID_ARGUMENT]Function xpath_string failed to parse XML string: Start-end tags mismatch

キーワード​

XPATH_STRING, XPATH, XML