SQL - 从 XML 变量中读取

SQL - read from XML variables

提问人:Miroslav 提问时间:6/20/2023 更新时间:6/20/2023 访问量:44

问:

如何在 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
;
SQL XML 变量

评论

0赞 Reporter 6/20/2023
meta.stackoverflow.com/questions/388759/......

答:

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
然后将其标记为答案