9

我有一个 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 上,但我尝试了一些方法,包括更改列类型,但我终于摆脱了困境。任何指针将不胜感激。

4

2 回答 2

7

听起来像是XML_EX类型nvarchar(max)。尝试将其更改为xml.

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

select  cast(lcxt.XML_EX as xml).query(...)
from    learner_course_xml_test lcxt
于 2012-06-08T10:00:18.750 回答
2

谢谢你们的回复。事实证明我过于复杂了,因为我无法访问 SQL 表中的命名空间。然而,我确实首先将我的字段类型更改为 XML,所以感谢 Andomar。我的解决方案如下:

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

正如我所希望的那样,这提取了我的总时间。再次感谢。

于 2013-11-25T10:22:33.853 回答