gpt4 book ai didi

sql-server - SQL Server XML类型从任何标记中选择Attribute = X

转载 作者:行者123 更新时间:2023-12-03 17:18:53 24 4
gpt4 key购买 nike

select *
from tablename
where CONVERT(xml, Sections).value('(/sections/section/@value)[1]', 'varchar(1)') = 'f'


将在“部分”列中正确检索具有以下值的记录:

<sections><section value="f" priority="4" /><section value="a" priority="4" /></sections>


但是错过了这一点:

<sections><section value="w" priority="4" /><section value="f" priority="4" /></sections>


显然这是问题“ /sections/section/@value)[1]”,但我不了解其语法,并且Google并没有太大帮助。我找到了一些使我走到现在的代码,但是我不知道如何修改它,以便它可以浏览所有标签,而不仅仅是第一个。我尝试删除 [1],但是出现以下错误:

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

最佳答案

您可以使用exist()

select *
from tablename
where CONVERT(xml, Sections).exist('/sections/section[@value = "f"]') = 1


如果要在查询中使用一些动态值代替硬编码的 f,则可以使用 sql:variable()

declare @Value varchar(10) = 'f'

select *
from tablename
where CONVERT(xml, Sections).exist('/sections/section[@value = sql:variable("@Value")]') = 1

关于sql-server - SQL Server XML类型从任何标记中选择Attribute = X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178858/

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