gpt4 book ai didi

sql - XML query() 有效,value() 需要找到单例 xdt :untypedAtomic

转载 作者:行者123 更新时间:2023-12-01 19:09:26 32 4
gpt4 key购买 nike

我有一个以文本形式存储的类型化 xml 文档。因此,我通过使用公共(public)表表达式将数据类型转换为 xml,以便能够使用 XML 方法:

WITH xoutput AS (
SELECT CONVERT(xml, t.requestpayload) 'requestpayload'
FROM TABLE t
WHERE t.methodid = 1)
SELECT x.requestpayload.query('declare namespace s="http://blah.ca/api";/s:validate-student-request/s:student-id') as studentid
FROM xoutput x

查询有效,将元素返回给我。但我只对值(value)感兴趣:

WITH xoutput AS (
SELECT CONVERT(xml, t.requestpayload) 'requestpayload'
FROM TABLE t
WHERE t.methodid = 1)
SELECT x.requestpayload.value('declare namespace s="http://blah.ca/api";/s:validate-student-request/s:student-id', 'int') as studentid
FROM xoutput x

这给了我以下错误:

'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'

我在谷歌上搜索的内容表明 XPATH/XQUERY 需要位于括号内和/或需要“[1]” - 两者都不起作用。 xml 中只有一个 Student-id 元素,但我猜架构允许更多元素?

此外,我想检索许多元素值 - 有没有办法一次声明命名空间而不是每次方法调用?

最佳答案

您需要使用这个:

SELECT 
x.requestpayload.value('declare namespace s="http://blah.ca/api";
<b>(</b>/s:validate-student-request/s:student-id<b>)[1]</b>', 'int')
AS
studentid
FROM
xoutput x

您需要将 XPath 放入 ( ... ) 中并添加 [1] 以简单地选择该序列的第一个值。

关于sql - XML query() 有效,value() 需要找到单例 xdt :untypedAtomic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302064/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com