XML XQUERY Проблема с типом данных NTEXT

Я хочу использовать XQuery для столбца с типом данных NTEXT (у меня нет выбора!). Я попытался преобразовать столбец в XML, используя CONVERT, но это дает ошибку:

Incorrect syntax near the keyword 'CONVERT'.

Вот запрос

SELECT 
    y.item.value('@UserID', 'varchar(50)') AS UnitID,   
    y.item.value('@ListingID', 'varchar(100)') AS @ListingID  
FROM   
    dbo.KB_XMod_Modules
    CROSS APPLY     
    CONVERT(xml, instancedata).nodes('//instance') AS y(item)

(instancedata - мой столбец)

Может ли кто-нибудь придумать обходной путь для этого?

Спасибо


person johnfa    schedule 23.04.2010    source источник


Ответы (1)


Кажется, что ни CONVERT, ни CAST(... AS XML) не работают.

Материал XQuery действительно работает только со столбцами XML - извините.

Однако: может быть, есть путь к отступлению :-)

Вы можете сделать одно из двух:

  • добавьте сохраняемый вычисляемый столбец типа XML в свою таблицу и примите участие в этом новом столбце

или - если вы не можете изменить структуру таблицы -

  • создать представление для этой таблицы и включить столбец с преобразованием XML

Итак, для решения № 1 вы должны сделать:

ALTER TABLE KB_XMod_Modules 
   ADD XmlCol AS CAST(instancedata AS XML) PERSISTED

а для решения № 2 вы должны использовать:

CREATE VIEW KBwithXML AS
  SELECT instancedata, CAST(instancedata AS XML) 'XmlCol'
  FROM KB_XMod_Modules

В обоих случаях теперь у вас есть доступный XmlCol типа XML, который вы можете запрашивать с помощью XQuery к своему удовольствию!

person marc_s    schedule 23.04.2010