2012-06-08 28 views
8

Tôi có truy vấn sql đang khởi động lại với lỗi trên tên cột của tôi cho biết 'không thể gọi phương thức trên nvarchar (tối đa).XML từ cột SQL: Không thể gọi các phương thức trên nvarchar (tối đa)

 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] 

Vấn đề dường như tập trung xung quanh [XML_EX] .value nhưng tôi đã thử một vài điều bao gồm thay đổi loại cột nhưng cuối cùng tôi đã không bị mắc kẹt. Bât cư thông tin được cung câp nao cung được la sự suât hiện tuyệt vơi.

Trả lời

2

Cảm ơn cho câu trả lời chàng trai của bạn. Hóa ra tôi đã quá phức tạp vì tôi không có quyền truy cập vào không gian tên của mình trong bảng SQL. Tuy nhiên, tôi đã bắt đầu bằng cách thay đổi kiểu trường thành XML để cảm ơn Andomar. Giải pháp của tôi là dưới đây:

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

Điều này trích tổng số lần tôi mong muốn. Cảm ơn một lần nữa.

6

Âm thanh như XML_EX thuộc loại nvarchar(max). Thử thay đổi nó thành xml.

Bạn cũng có thể cast nó trong truy vấn, như vậy:

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

'CAST' phải quấn tham khảo toàn bộ cột, không chỉ là tên cột (ví dụ:' lcxt.' nên bên trong) –

+0

@Damien_The_Unbeliever: Rõ ràng là đúng, cảm thấy tự do để chỉnh sửa;) – Andomar

Các vấn đề liên quan