我需要找出表中的图像列是否为空。我一直在尝试使用CASE
,但我总是遇到错误。
查询:
SELECT OutgoindDoc = CASE ReceivedData
WHEN null THEN 'null'
ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData)))
END
FROM ib_IncomingData
我得到的错误:
Msg 306,Level 16,State 1,Line 1
除非使用IS NULL或LIKE运算符,否则无法比较或排序text,ntext和image数据类型。
我可以用什么来获得我需要的结果?
答案 0 :(得分:5)
CASE <expression> WHEN <value> THEN
使用相等/等效比较,但您需要进行IS NULL
检查,因为NULL
不是可比较的数量,而且 - 如错误所示 - 图像无法“比较”
幸运的是,there is another construct - CASE WHEN <test> THEN
- 将等式带入用户提供的参数中,允许您省略它:
SELECT OutgoindDoc = CASE
WHEN ReceivedData IS NULL THEN
'null'
ELSE
CONVERT(xml,(CONVERT(varbinary(max),ReceivedData)))
END
FROM ib_IncomingData
答案 1 :(得分:2)
尝试以下方法:
SELECT OutgoindDoc = CASE
WHEN ReceivedData IS NULL THEN 'null'
ELSE CONVERT(xml,(CONVERT(varbinary(max),ReceivedData)))
END
FROM ib_IncomingData
答案 2 :(得分:1)
更简洁的版本
SELECT OutgoindDoc =
ISNULL(CONVERT(xml,(CONVERT(varbinary(max),ReceivedData))) ,'null')
FROM ib_IncomingData
虽然从评论来看,无论如何你似乎并不需要这样做。