Sql 检查图像列是否为空

Sql 检查图像列是否为空,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要找出表中的图像列是否为空。我一直在尝试使用案例,但总是出现错误 查询: SELECT OutgoindDoc = CASE ReceivedData WHEN null THEN 'null' ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) END FROM ib

我需要找出表中的图像列是否为空。我一直在尝试使用
案例
,但总是出现错误

查询:

SELECT  OutgoindDoc = CASE ReceivedData       
                        WHEN null THEN 'null'
                        ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData 
我得到的错误是:

Msg 306,16级,状态1,第1行
文本、ntext和图像数据类型不能进行比较或排序,除非使用IS NULL或LIKE运算符

我可以使用什么来获得所需的结果?

尝试以下方法:

SELECT  OutgoindDoc = CASE       
                        WHEN ReceivedData IS NULL THEN 'null'
                        ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData 
CASE WHEN THEN
使用相等/等效比较,但您需要检查
IS NULL
,因为
NULL
不是可比较的数量,并且正如错误所示,图像无法“比较”

幸运的是,CASE WHEN-这将在用户提供的参数中显示相等值,允许您忽略它:

SELECT  OutgoindDoc = CASE
                        WHEN ReceivedData IS NULL THEN
                           'null'
                        ELSE
                           CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) 
                      END
FROM    ib_IncomingData
更简洁的版本

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

尽管从评论中可以看出,您似乎并不需要这样做。

为什么要将其转换为
XML
,以确定它是否为
NULL
?@TomalakGeret'kal-那么他在做什么?如果列为
NULL
,那么强制转换的结果将是
NULL
,那么为什么要将NULL作为字符串返回呢?@Martin Smith-如果不是NULL,我正在将其转换为XML。@Gisli-为什么不进行测试就强制转换呢?无意冒犯,只是帮助您在这里走上正确的道路而不会感到沮丧。