2012-06-08 2 views
8

'열 이름에'nvarchar (max)에서 메서드를 호출 할 수 없다는 오류가 표시되는 sql 쿼리가 있습니다.SQL에서 XML : 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

감사 답변들에 대해. 내가 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

관련 문제