【问题标题】:Difference between (NULL) and empty in mysql column valuesmysql列值中(NULL)和空之间的区别
【发布时间】:2019-03-30 09:22:31
【问题描述】:

我在一家公司工作,我们在后端使用 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) 检查/比较值时是否有问题?
它的行为是否不同?

【问题讨论】:

标签: mysql sql string where-clause sql-null


【解决方案1】:

要检查是否为空,您想使用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 :)
【解决方案2】:

将您的查询更改为

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

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 2011-03-04
    • 1970-01-01
    • 2011-06-15
    • 2012-08-24
    • 2013-01-12
    • 2014-09-24
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多