gpt4 book ai didi

sql-server - SQL Server 中的 XML 结构

转载 作者:行者123 更新时间:2023-12-04 01:58:50 27 4
gpt4 key购买 nike

我有以下代码可以正常工作并返回预期结果:

DECLARE @xmlList xml
SET @xmlList = '<Tx><T>1</T><T>2</T><T>3</T></Tx>'

SELECT
X.Y.value('.', 'varchar(10)') AS [ID], 'OK' AS [Status]
FROM @xmlList.nodes('/Tx/T') X(Y)

但是,当我为它提供以下结构并返回相同的结果时,它也会接受:

SET @xmlList = '<Tx><T>1</T></Tx><Tx><T>2</T><T>3</T></Tx>'

请注意我没有根元素。

我的问题是,我需要更改什么才能使代码接受第一个结构有效并拒绝另一个?

谢谢,

蓝天

最佳答案

如果你只想查询一个Tx节点(第一个)你可以这样做

SELECT
X.Y.value('.', 'varchar(10)') AS [ID], 'OK' AS [Status]
FROM @xmlList.nodes('/Tx[1]/T') X(Y)

您还可以检查根节点的数量并调用 raiserror如果你有不止一个根。

select @xmlList.query('count(/Tx)').value('.', 'int')

xml 数据类型之前使用的技术只接受一个根节点。 sp_xml_preparedocument如果有多个根,将引发异常。

declare @idoc int
exec sp_xml_preparedocument @idoc out, @xmlList
exec sp_xml_removedocument @idoc

关于sql-server - SQL Server 中的 XML 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026343/

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