特定 xpath 的 Sql 语句

Sql Statement for a particular xpath

提问人:user2184523 提问时间:7/13/2023 更新时间:7/13/2023 访问量:15

问:

我有一个 XPath 语句,可以很好地处理我的 xml。

//PaymentProperty[Name='PaymentReference']/StoredStringValue

当我将此 xml 存储在 mytable.xmlField 中时,有没有办法从 SQL 中获取此值? 我试过了

select  x.xml.query('//PaymentProperty[@Name=PaymentReference]/StoredStringValue') from (select cast(xmlField as xml) as xml from mytable

但我想 XQuery 喜欢不同的语法?这是一个非常动态的 xml,所以我需要知道的是,如果 parentNode PaymentProperty 中的任何位置有针对标签的“PaymentReference”值,然后针对标签 StoredStringValue 获取值。有什么办法可以从SQL中实现这一点吗?

感谢所有的帮助

xpath-2.0 xquery-sql

评论


答:

0赞 user2184523 7/13/2023 #1

ChatGPT来救援

SELECT B.value('(//PaymentProperty[Name=“PaymentReference”]/StoredStringValue)[1]', 'nvarchar(max)') 作为结果 从 在此 SQL 查询中,“B.value()”函数用于从表“A”中的 XML 列“B”中提取 XPath 表达式的值。XPath 表达式用括号括起来,并作为“value()”函数的第一个参数提供。第二个参数指定结果的数据类型,在本例中为“nvarchar(max)”。

请注意,如果存在多个匹配项,则 XPath 表达式末尾的 [1] 仅用于检索第一个匹配节点。如果要检索所有匹配的节点,可以从查询中删除 [1] 部分。

请确保将 SQL 数据库中的“A”替换为实际表名,将“B”替换为列名。