Как вы запрашиваете текст в столбце SQL Server XML - PullRequest
1 голос
/ 29 мая 2020

У меня есть столбец XML в таблице базы данных SQL Server. Он хранит XML ответов от веб-службы.

Если время ожидания веб-службы истекает, он сохраняет фактический текст

Ошибка: время ожидания ответа истекло

Он фактически сохраняет этот текст в столбце XML - и я не могу его запросить, потому что я не могу сравнить строку со значением XML. Есть идеи?

1 Ответ

2 голосов
/ 30 мая 2020

Непустая строка без каких-либо тегов будет рассматриваться как отдельный текстовый узел на SQL сервере.

Таким образом, вы можете использовать 'text()[1]', чтобы получить первый текстовый узел верхнего уровня в содержимом XML и проверить его.

вы можете использовать exist, если хотите исключить из рассмотрения любое содержимое, которое представляет собой смесь текстовых узлов и элементов верхнего уровня.

SELECT *,
        your_col.value('text()[1]', 'varchar(8000)')
FROM t
WHERE your_col.exist('*') = 0 AND your_col.exist('text()') = 1
...