【发布时间】:2015-06-15 01:48:48
【问题描述】:
假设我有这个数据子集。我需要做的就是将John | John | 20 作为我的输出。我遇到的主要问题是我的 XmlData 存储在 nvarchar(Max) 字段中,并且修复此问题的更新会破坏未知数量的其他应用程序(谈论大规模,所以我不能简单地修改表格设计)。
Name nvarchar(23) | XmlData (nvarchar(max) |
John |<Personal><name>John</name><age>20</age></Personal> |
Suzy |<Personal><name>Suzanne</name><age>24</age></Personal> |
etc...
到目前为止我尝试过的类似于以下内容,但失败了。
SELECT Name,
[myTable].Value('(Personal[name ="name"]/value/text())[1]', 'nvarchar(100)') as 'XmlName',
[myTable].Value('(Personal[name ="age"]/value/text())[1]', 'nvarchar(100)') as 'XmlAge'
FROM [MyTable]
我怎样才能实现以下输出的目标?
Name | XmlName | XmlAge |
John | John | 20 |
Suzy | Suzanne | 24 |
etc...
【问题讨论】:
标签: sql-server xml tsql parsing select