2017-04-25 70 views
0

我有一个XML列的表。 我想解析它在XML特定的键,我完成通过执行以下操作:解析SQL CAST XML

SELECT TOP 1000 
CAST([PlatformInfo] as xml).value('(/PlatformInfo/@Device)[1]', 'varchar(max)') as Device , 
CAST([PlatformInfo] as xml).value('(/PlatformInfo/@SDKv)[1]', 'varchar(max)') as SDKv 
FROM [myDB].[dbo].[HISTORY_TB] 

现在我想对它进行排序,我总是得到一个错误。 我怎么能说我的设备和SDKv创建的自定义列进行排序? 我如何按特定值对它进行分类?

感谢

+1

请出示你的代码,错误消息,并且预期的结果。 – Renzo

+0

代码显示在原来的问题,我试图做的代码块“ORDER BY SDKv或@SDKv由我结束我切切实实做一些错误 – ywainberg

+0

你说我要来排序,所以,我想,你有一个。分类代码给出了一个错误 – Renzo

回答

0
Create table #companyname(name varchar(max)) 
Insert into #companyname (name) values 
('<name>US Concrete Inc</name>'), 
('<name>Digitiliti Inc</name>'), 
('<name>Printron Inc</name>'), 
('<name>Wesco Financial, LLC</name>'), 
('<name>Fusion Restaurant Group Inc</name>') 

select * from (
select top 4 CAST(name as xml).value('(/name)[1]','nvarchar(max)') as t 
from #companyname)tbl 
order by tbl.t 

同理:

Select * from (
    SELECT TOP 1000 
CAST([PlatformInfo] as xml).value('(/PlatformInfo/@Device)[1]', 'varchar(max)') as Device , 
CAST([PlatformInfo] as xml).value('(/PlatformInfo/@SDKv)[1]', 'varchar(max)') as SDKv 
FROM [myDB].[dbo].[HISTORY_TB]) dertbl 
order by dertbl.Device,dertbl.SDKv 
+0

这是我得到了'错误消息207,级别16,状态1,行6 无效列名 '设备'。 消息207,级别16,状态1,行6 无效的列名称SDKv。“' – ywainberg