3

我在一家公司工作,我们在后端使用 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) is != 'Collection' 也应该满足上述条件。
所以根据我的结果应该是。

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

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

4

2 回答 2

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')
于 2019-03-30T09:40:25.003 回答
0

将您的查询更改为

SELECT 
  * 
FROM
  `tc_wallet` 
WHERE login_id = 'gaurav.wakharkar' 
  AND `delete_flag` = 'F' 
  AND (`tips_type` != 'Collection' or `tips_type` is null)
于 2019-03-30T09:40:06.677 回答