在SQlite中使用大于运算符时返回空值

时间:2017-05-10 12:54:53

标签: sql sqlite

select cars.car_id, cars.doors from cars where cars.doors>2

除了空值和“N / A”之外,上一个查询还会返回大于2的结果。 ,我尝试过NOT NULL但是空白大于2

并没有意义

3 个答案:

答案 0 :(得分:1)

documentation说:

  

INTEGER或REAL值小于任何TEXT或BLOB值。

要防止空条目匹配,您应该将数据库更改为使用SQL的NULL值,而不是(空或非空)字符串。

或者,将您的值转换为" empty"查询时为实际的NULL值:

where nullif(cars.doors, 'N/A') > 2

答案 1 :(得分:0)

这是隐式转换,当你有空数据时,进行比较时,它会被转换为0。

neighbours

结果是1。

答案 2 :(得分:0)

select doors from cars where cast(doors AS integer)>2;

它按预期工作但我仍然不明白为什么我应该将它转换为整数,尽管字段类型是整数