2017-04-25 1 views
0

J'ai une table avec une colonne xml. je veux analyser pour une touche spécifique du xml, que j'accomplissons en procédant comme suit:analyse 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] 

Maintenant, je veux faire le tri et je reçois toujours une erreur. Comment puis-je trier les colonnes personnalisées que j'ai créées en tant que périphérique et SDKv? Comment puis-je le trier par une valeur spécifique?

Merci

+1

S'il vous plaît montrer votre code, le message d'erreur, et les résultats attendus. – Renzo

+0

le code est affiché dans la question d'origine, j'ai essayé de faire à la fin du bloc de code "ORDER BY SDKv ou @SDKv par je suis surly faire quelque chose de mal – ywainberg

+0

Vous avez dit que je veux trier, donc, je suppose que vous avez code de tri qui donne une erreur – Renzo

Répondre

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 

De même:

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

C'est l'erreur que j'ai eu ' Msg 207, niveau 16, état 1, ligne 6 Nom de colonne non valide 'Device' Msg 207, niveau 16, état 1, ligne 6 Nom de colonne non valide 'SDKv'. ' – ywainberg