2012-06-08 15 views
8

我有一個sql查詢,在我的列名稱上發生錯誤,表示'無法調用nvarchar上的方法(max)「。來自SQL列的XML:無法調用nvarchar上的方法(最大)

 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] 

這個問題似乎周圍[XML_EX] .value的中心,但我已經嘗試了一些事情,包括更改列類型,但我終於來了脫膠。任何指針將不勝感激。

回答

2

感謝您的答覆傢伙。事實證明我過於複雜了,因爲我無法訪問SQL表中的我的名稱空間。不過,我開始將我的字段類型更改爲XML,所以感謝Andomar。我的解決方案如下:

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

這提取我的總時間,因爲我希望。再次感謝。

6

聽起來像XML_EX類型nvarchar(max)。嘗試將其更改爲xml

您也可以將其丟在查詢中,像這樣:

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

'CAST'必須包含整列引用,而不僅僅是列名(即'lcxt.'應該在裏面) –

+0

@Damien_The_Unbeliever:顯然是正確的,隨意編輯;) – Andomar