Проверьте, является ли столбец изображения пустым - PullRequest
3 голосов
/ 21 декабря 2011

Мне нужно выяснить, является ли столбец изображения в таблице пустым.Я пытался использовать CASE, но всегда получаю сообщение об ошибке.

Запрос:

SELECT  OutgoindDoc = CASE ReceivedData       
                        WHEN null THEN 'null'
                        ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData 

И получаю ошибку:

Сообщение 306, уровень 16, состояние 1, строка 1Типы данных text, ntext и image нельзя сравнивать или сортировать, кроме случаев использования оператора IS NULL или LIKE.

Что можно использовать для получения необходимых результатов?

Ответы [ 3 ]

5 голосов
/ 21 декабря 2011

CASE <expression> WHEN <value> THEN использует сравнение на равенство / эквивалентность, но вам нужна проверка IS NULL, потому что NULL не сопоставимое количество и & mdash; поскольку ошибка указывает & mdash; изображения не могут быть "сравнены".

К счастью, есть еще одна конструкция & mdash; CASE WHEN <test> THEN & mdash; это приводит к равенству в предоставленных пользователем параметрах, позволяя вам его опустить:

SELECT  OutgoindDoc = CASE
                        WHEN ReceivedData IS NULL THEN
                           'null'
                        ELSE
                           CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData
2 голосов
/ 21 декабря 2011

Попробуйте следующее:

SELECT  OutgoindDoc = CASE       
                        WHEN ReceivedData IS NULL THEN 'null'
                        ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData 
1 голос
/ 21 декабря 2011

Более краткая версия

SELECT  OutgoindDoc = 
         ISNULL(CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) ,'null')
FROM    ib_IncomingData 

Хотя из комментариев кажется, что вам все равно не нужно этого делать.

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