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-为什么不进行测试就强制转换呢?无意冒犯,只是帮助您在这里走上正确的道路而不会感到沮丧。