| --- | |
| { | |
| "title": "XPATH_STRING", | |
| "language": "en", | |
| "description": "The XPATHSTRING function is used to parse the XML string and return the first XML node that matches the XPath expression." | |
| } | |
| --- | |
| ## Description | |
| The XPATH_STRING function is used to parse the XML string and return the first XML node that matches the [XPath](https://www.w3.org/TR/xpath-10/) expression. | |
| :::tip | |
| This function is supported since version 3.0.6. | |
| ::: | |
| ## Syntax | |
| ```sql | |
| XPATH_STRING(<xml_string>, <xpath_expression>) | |
| ``` | |
| ## Parameters | |
| | Parameter | Description | | |
| | --------- | ----------------------------------------------| | |
| | `<xml_string>` | Source string. Type: VARCHAR | | |
| | `<xpath_expression>` | [XPath](https://www.w3.org/TR/xpath-10/) expression. Type: VARCHAR | | |
| ## Return Value | |
| Returns VARCHAR type, representing the contents of the first XML node that matches the XPath expression. | |
| Special cases: | |
| - The function raises an error if xml or xpath are malformed. | |
| ## Examples | |
| 1. Basic node value extraction | |
| ```sql | |
| SELECT xpath_string('<a>123</a>', '/a'); | |
| ``` | |
| ```text | |
| +-----------------------------------+ | |
| | xpath_string('<a>123</a>', '/a') | | |
| +-----------------------------------+ | |
| | 123 | | |
| +-----------------------------------+ | |
| ``` | |
| 2. Nested element extraction | |
| ```sql | |
| SELECT xpath_string('<a><b>123</b></a>', '/a/b'); | |
| ``` | |
| ```text | |
| +--------------------------------------------+ | |
| | xpath_string('<a><b>123</b></a>', '/a/b') | | |
| +--------------------------------------------+ | |
| | 123 | | |
| +--------------------------------------------+ | |
| ``` | |
| 3. Using attributes | |
| ```sql | |
| SELECT xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]'); | |
| ``` | |
| ```text | |
| +----------------------------------------------------------+ | |
| | xpath_string('<a><b id="1">123</b></a>', '//b[@id="1"]') | | |
| +----------------------------------------------------------+ | |
| | 123 | | |
| +----------------------------------------------------------+ | |
| ``` | |
| 4. Using position predicates | |
| ```sql | |
| SELECT xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]'); | |
| ``` | |
| ```text | |
| +----------------------------------------------------+ | |
| | xpath_string('<a><b>1</b><b>2</b></a>', '/a/b[2]') | | |
| +----------------------------------------------------+ | |
| | 2 | | |
| +----------------------------------------------------+ | |
| ``` | |
| 5. Handling CDATA and comments | |
| ```sql | |
| SELECT xpath_string(NULL, '/a'); | |
| ``` | |
| ```text | |
| +--------------------------+ | |
| | xpath_string(NULL, '/a') | | |
| +--------------------------+ | |
| | NULL | | |
| +--------------------------+ | |
| ``` | |
| ### Keywords | |
| XPATH_STRING, XPATH, XML |