Проверка на пустой столбец XML - PullRequest
1 голос
/ 08 января 2010

Следующий запрос успешно выполнен:

select top(100) * from PackageSessionNodes 
where Cast(ContentInteractions as nvarchar) != ''

Далее выдает ошибку Размер целевой строки слишком мал для представления экземпляра XML

update PackageSessionNodes set ContentInteractions = '<contentinteractions />'
where Cast(ContentInteractions as nvarchar) = ''

ContentInteractions - это столбец xml. На нем не определен ДДТ.

Как мне решить второй запрос, чтобы получить эти записи с '' в формате xml?

Мне кажется, что SqlServer не может иметь дело с пустыми значениями, которые хранятся в столбце xml ... но вы можете вставить их ... как это?

1 Ответ

4 голосов
/ 08 января 2010

Проблема с вашим CAST. Когда вы не указываете длину nvarchar, по умолчанию в CAST-функции используется 30 символов. Так что на самом деле говорится в вашем утверждении

update PackageSessionNodes set ContentInteractions = '<contentinteractions />'
where Cast(ContentInteractions as nvarchar(30)) = ''

Таким образом, если XML-контент ContentInteractions сериализован в более чем 30 символов, вы получите эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...