mysql列值中的(NULL)和空之间的区别

时间:2019-03-30 09:22:31

标签: mysql sql

我在一家在后端使用Spring -Hibernate和mysql数据库的公司工作。

有一个表 tc_wallet
在此表中,我有一列 tips_type ,其值为

  1. 可付款的
  2. ''(空)
  3. NULL->尚未初始化任何值

现在当我启动查询时:

SELECT * 
FROM `tc_wallet` 
WHERE 
    login_id = 'gaurav.wakharkar' 
    AND `delete_flag` = 'F' 
    AND `tips_type` != 'Collection' 

我得到的列值为“”(空)的结果。

Login_id            tips_type   
gaurav.wakharkar                 
gaurav.wakharkar         
gaurav.wakharkar   

但是,即使(NULL)是!='Collection'也应满足上述条件。
所以根据我的说法,结果应该是。

Login_id            tips_type   
gaurav.wakharkar                 
gaurav.wakharkar         
gaurav.wakharkar       
gaurav.wakharkar    (NULL)   
gaurav.wakharkar    (NULL)

使用(NULL)检查/比较值时是否存在问题?
它的行为是否有所不同?

2 个答案:

答案 0 :(得分:3)

要检查是否为空,您想使用IS NULL。将NULL与相等运算符(或不相等运算符)进行比较总是错误的。

考虑:

SELECT * 
FROM `tc_wallet` 
WHERE 
    login_id = 'gaurav.wakharkar' 
    AND `delete_flag` = 'F' 
    AND (`tips_type` IS NULL OR `tips_type` != 'Collection')

答案 1 :(得分:0)

将查询更改为

SELECT 
  * 
FROM
  `tc_wallet` 
WHERE login_id = 'gaurav.wakharkar' 
  AND `delete_flag` = 'F' 
  AND (`tips_type` != 'Collection' or `tips_type` is null)