提问人:Miroslav 提问时间:6/20/2023 更新时间:6/20/2023 访问量:44
SQL - 从 XML 变量中读取
SQL - read from XML variables
问:
如何在 SQL Server 2022 上从此 XML 类型中选择值?
<Variables>
<Variable Name="Menge [Stk]" Variable="N" Value="1" ClientDoc="0" CDchangeable="0" ValueChangeAble="1" OnProdPaper="0" ExChangeEuro="0" AVSVariable="0" />
</Variables>
单个变量将是一列。
谢谢。
我试过这个,但没有显示变量的值:
select 'Name1' [Name]
, '<Variables><Variable Name="Menge [Stk]" Variable="N" Value="1" ClientDoc="0" CDchangeable="0" ValueChangeAble="0" OnProdPaper="0" ExChangeEuro="0" AVSVariable="0"/></Variables> ' [VariablesXML]
into #TempTable
;
select [Name], VariablesXML, CAST(VariablesXML as XML) [VariablesXML] from #TempTable
;
with P as (select [Name], CAST(VariablesXML as XML) [VariablesXML] from #TempTable)
select T.[Name]
, LX.VariablesXML
, X.N.value('Name[1]', 'nvarchar(max)') [Name]
, X.N.value('Variable[1]', 'nvarchar(max)') [Variable]
, X.N.value('Value[1]', 'nvarchar(max)') [Value]
from #TempTable T
inner join P LX on T.Name = LX.Name
outer apply LX.VariablesXML.nodes('/Variables') as X(N)
;
drop table #TempTable
;
答:
0赞
tinazmu
6/20/2023
#1
您尝试检索的部分是属性,因此您使用 @ 语法:
, X.N.value('Variable[1]/@Name', 'nvarchar(max)') [Name]
即第一个 Variable 元素的 Name 属性。
评论
0赞
Miroslav
6/20/2023
完美,我第一次做XML导出值。多谢!
0赞
tinazmu
6/20/2023
然后将其标记为答案
评论