2012-06-08 29 views
8

Tengo una consulta sql que se está recuperando con un error en mi nombre de columna que dice 'no puedo llamar a métodos en nvarchar (max).XML de la columna SQL: No se pueden llamar a los métodos en 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] 

El problema parece centrarse en torno [XML_EX] .value pero he intentado un par de cosas, incluyendo el cambio del tipo de columna, sino que por fin he despegado. Cualquier puntero sería muy apreciado.

Respuesta

2

Gracias por sus respuestas chicos. Resulta que estaba complicando demasiado ya que no tengo acceso a mi espacio de nombres en la tabla SQL. Sin embargo, comencé cambiando mi tipo de campo a XML, así que gracias Andomar. Mi solución está a continuación:

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

Esto extrae mis tiempos totales como esperaba. Gracias de nuevo.

6

Suena como XML_EX es del tipo nvarchar(max). Intente cambiarlo a xml.

También se puede convertir en la consulta, así:

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

'CAST' tiene que envolver toda la referencia de la columna, no solo el nombre de la columna (es decir,' lcxt' debe estar adentro) –

+0

@Damien_The_Unbeliever: Obviamente, no dude en editar;) – Andomar

Cuestiones relacionadas