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

Difference between (NULL) and empty in mysql column values

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

有个tabletc_wallet
在此 table 中,我有一列 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) is != 'Collection' 也应该满足上述条件
所以根据我的说法,结果应该是。

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

checking/comparing 值为 (NULL) 时是否存在问题?
它的行为是否不同?

将您的查询更改为

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

要检查是否为空,您要使用 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')