2012-06-08 8 views
8

Mam kwerendę sql, która jest kopią z błędem na mojej kolumnie, mówiąc "nie można wywołać metod na nvarchar (max).XML z kolumny SQL: Nie można wywoływać metod na nvarchar (max)

 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] 

Problem wydaje się wokół centrum [XML_EX] .Value ale Próbowałem kilka rzeczy, w tym zmiany typu kolumny, ale ja już w końcu nie powieść. Wszelkie wskazówki byłyby bardzo mile widziane.

Odpowiedz

2

Dzięki za odpowiedzi facetów. Okazuje się, że komplikowałem to, ponieważ nie mam dostępu do mojej przestrzeni nazw w tabeli SQL. Zacząłem jednak od zmiany typu pola na XML, więc dzięki Andomar. Moje rozwiązanie jest poniżej:

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

Wydobywa moje całkowite czasy, tak jak miałem nadzieję. Dzięki jeszcze raz.

6

Brzmi jak XML_EX o typie nvarchar(max). Spróbuj zmienić go na xml.

Można też rzucić ją w zapytaniu, tak:

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

'CAST' musi zawijać całe odwołanie do kolumny, a nie tylko nazwa kolumny (czyli' lcxt.' powinno być w środku) –

+0

@Damien_The_Unbeliever: Oczywiście dobrze, czuć się swobodnie edytować;) – Andomar

Powiązane problemy