2012-06-08 45 views
8

Ich habe eine SQL-Abfrage, die mit einem Fehler auf meinem Spaltennamen mit dem Ausspruch 'Methoden können nicht auf Nvarchar (max) aufrufen wird.XML aus SQL-Spalte: Methoden können nicht auf Nvarchar (Max) aufgerufen werden

 SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].Query('declare namespace 
     x="http://tempuri.org/cmi.xsd";] (/x:cmi/x:core/x:time_taken)') 
     AS TimeTaken FROM [LEARNER_COURSE_XML_TEST] 

Die Frage scheint sich um [XML_EX] .value zum Zentrum, aber ich habe ein paar Dinge ausprobiert, einschließlich der Spaltentyp ändern, aber ich habe schließlich pfuschen. Alle Hinweise würden sehr geschätzt werden.

Antwort

2

Vielen Dank für Ihre Antworten Jungs. Es stellte sich heraus, dass ich es zu kompliziert machte, da ich in der SQL-Tabelle keinen Zugriff auf meinen Namespace hatte. Ich habe jedoch damit begonnen, meinen Feldtyp in XML zu ändern, danke Andomar. Meine Lösung ist unter:

SELECT [LEARNER_COURSE_XML_TEST].[XML_EX].query('data(sco/cmicore/total_time)') AS TimeTaken FROM [LEARNER_COURSE_XML_TEST] 

Dies extrahiert meine Gesamtzeiten, wie ich es mir erhofft hatte. Danke noch einmal.

6

Klingt wie XML_EX ist vom Typ nvarchar(max). Versuchen Sie, es in xml zu ändern.

Sie werfen es auch in der Abfrage, etwa so:

select cast(lcxt.XML_EX as xml).query(...) 
from learner_course_xml_test lcxt 
+0

'CAST' muss die ganze Spaltenreferenz umbrechen, nicht nur den Spaltennamen (d. H.' Lcxt.' sollte drin sein) –

+0

@Damien_The_Unbeliever: Offensichtlich richtig, fühlen Sie sich frei zu bearbeiten;) – Andomar

Verwandte Themen