使用解析的xml数据中的值创建一个新列

时间:2017-04-18 15:21:12

标签: sql-server xml sql-server-2008 parsing

我使用的是SQL Server 2008,而且对SQL来说相对较新。

我有一个包含数据类型为print([i for i in range(0,10)]) 的列的表。此列中的XML包含客户收据的餐馆信息:

xml

在这里做了一些研究后,我学会了如何解析我关心的信息,即<order> <Check> <CheckHeader> <CheckNumber>279084</CheckNumber> <ServerNumber>186</ServerNumber> <ServerName>ServerName</ServerName> <CheckTotal>8.95</CheckTotal> </CheckHeader> </Check>

<CheckTotal>

我在努力的地方是如何将此已解析的SELECT order_xml.value('(/order//CheckTotal/node())[1]', 'nvarchar(max)') as CheckTotal FROM CheckTable 值添加到此CheckTotal表中的新列中(当然,确保CheckTable与相应的匹配行)。

我的CheckTotal表格如下:

CheckTable Image

我已经做了什么?

我改变了我的表以添加新列,我尝试创建一个CheckTable,我在其中添加了解析的@temptTb值和解析的CheckTable值。我也解析了CheckNumber值,以确保当我加入这两个表以尝试更新新列时,我会根据{{1}匹配正确的CheckNumber当然,事实证明,对于我的数据集CheckTotal,它们被回收再利用。

现在,我确实希望存在这样的解决方案,我可以立即将解析后的xml CheckNumber值直接添加到CheckNumber表中的新列中。

1 个答案:

答案 0 :(得分:0)

如果您的XML仅包含一个 {/ 1>}的一个订单 - 您可以尝试这样的事情:

<Check>

如果您的XML在元素层次结构的任何级别包含多个元素,那就有点棘手......