XML XQUERY Проблема с типом данных NTEXT - PullRequest
1 голос
/ 23 апреля 2010

Я хочу использовать 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 - моя колонка)

Кто-нибудь может придумать способ обойти это?

Спасибо

1 Ответ

0 голосов
/ 23 апреля 2010

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

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

Однако: может быть, есть выход из положения :-)

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

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

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

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

Так что для решения № 1 вы'do do:

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 к радости вашего сердца!

...