Sql Server 取xml中节点值(传参)
前一章已经讲了一些关于xml取值的方法这次讲一下,关于xml.value()方法中传参。sql:variable("参数")举例:-- 测试数据declare @data xmlset @data='<sourceCode><rules><rule code="InvalidCode" enabled="true"><details><code
·
前一章已经讲了一些关于xml取值的方法
这次讲一下,关于xml.value()方法中传参。
如果直接拼接 @data.value('xxxx'+@fieldValue+'xxxx','varchar(max)')
报错:XML 数据类型方法 "value" 的参数 1 必须是字符串文字
正确方式:
sql:variable("参数")
举例:
-- 测试数据
declare @data xml
set @data='<sourceCode>
<rules>
<rule code="InvalidCode" enabled="true">
<details>
<codeDescriptionList>
<codeDescription code="JC" description="JOYCE" />
<codeDescription code="SW" description="SEAN" />
<codeDescription code="JLA" description="JUNO" />
<codeDescription code="GW1" description="GEENA" />
</codeDescriptionList>
</details>
</rule>
<rule code="CreateEvent" enabled="false">
<details>
<CreateEventRuleCode>Z00</CreateEventRuleCode>
</details>
</rule>
<rule code="DateTimeFormat" enabled="false">
<details>
<format>Short</format>
</details>
</rule>
<rule code="CheckEntered" enabled="false">
<details />
</rule>
</rules>
</sourceCode>'
-- 测试传参
declare @fieldValue varchar(100)='JC'
-- 查询语句
select @data.value('((//rules/rule/details/codeDescriptionList/codeDescription[@code=sql:variable("@fieldValue")])[1]/@description)[1]','varchar(max)')

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)