Cast()在SQLite中无法正常工作?

时间:2013-04-28 22:01:22

标签: sql sqlite select type-conversion

我有一列图像,我想添加一个选择列(称为HasImage)来指示如果图像为null,则HasImage的值应为false(或位0),否则HasImage应具有值是(或第1位):

SELECT CAST(CASE WHEN ImageColumn IS NULL THEN 0 ELSE 1 END AS bit) AS HasImage FROM MyTable

我知道 IsNull 功能,但我在使用 IsNull 之前尝试了这个,当用上述查询将数据填充到DataTable中时,值都是长型(不是我预期的那样)?

为什么会这样?

非常感谢你!

2 个答案:

答案 0 :(得分:2)

只需使用:

SELECT CASE WHEN ImageColumn IS NOT NULL THEN 1 ELSE 0 END AS HasImage
FROM mytable

请注意,SQLite没有真正的BOOLEANBIT类型。相反,您可以使用结果整数值0或1,就像它是布尔值一样 - 它通常适用于所有意图和目的,包括在布尔表达式中使用它。

例如,请参阅this SQLFiddle

答案 1 :(得分:0)

我认为SQLite没有“位”数据类型。请参阅:http://www.sqlite.org/datatype3.html