SQL列中的XML:无法在nvarchar(max)上调用方法

时间:2012-06-08 09:50:57

标签: sql xml

我有一个sql查询,我的列名称出现错误,说'无法调用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]

这个问题似乎以[XML_EX] .value为中心,但我尝试过一些事情,包括更改列类型,但我终于解开了。任何指针都将非常感激。

2 个答案:

答案 0 :(得分:7)

XML_EX类似nvarchar(max)类型的声音。尝试将其更改为xml

您也可以在查询中强制转换它,如下所示:

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

答案 1 :(得分:2)

感谢您的回复。事实证明,由于我无权访问SQL表中的命名空间,因此我将其复杂化。然而,我开始将我的字段类型更改为XML,所以感谢Andomar。我的解决方案如下:

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

这可以像我希望的那样提取我的总时间。再次感谢。