mysql列值中的(NULL)和空之间的差异

mysql列值中的(NULL)和空之间的差异,mysql,sql,string,where-clause,sql-null,Mysql,Sql,String,Where Clause,Sql Null,我在一家公司工作,我们在后端使用Spring-Hibernate和mysql数据库 有一张桌子tc\u钱包 在这个表中,我有一个列tips\u type,它有值 收款,应付 ”(空) NULL-->未初始化任何值 现在,当我发出一个查询时: SELECT * FROM `tc_wallet` WHERE login_id = 'gaurav.wakharkar' AND `delete_flag` = 'F' AND `tips_type` != 'Collec

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

有一张桌子tc\u钱包
在这个表中,我有一个列tips\u type,它有值

  • 收款,应付
  • (空)
  • NULL
    -->未初始化任何值
  • 现在,当我发出一个查询时:

    SELECT * 
    FROM `tc_wallet` 
    WHERE 
        login_id = 'gaurav.wakharkar' 
        AND `delete_flag` = 'F' 
        AND `tips_type` != 'Collection' 
    
    我得到的结果列值为“”(空)

    但偶数(NULL)是!='“集合”应满足上述条件。
    所以我认为结果应该是

    Login_id            tips_type   
    gaurav.wakharkar                 
    gaurav.wakharkar         
    gaurav.wakharkar       
    gaurav.wakharkar    (NULL)   
    gaurav.wakharkar    (NULL)
    
    检查/比较(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')
    

    也许这将有助于理解在任何搜索引擎中键入
    mysql null空字符串
    都会为您提供答案。您可能想检查一下:您应该在这里提到三值逻辑,以使答案完整。无论如何,+1:)
    SELECT * 
    FROM `tc_wallet` 
    WHERE 
        login_id = 'gaurav.wakharkar' 
        AND `delete_flag` = 'F' 
        AND (`tips_type` IS NULL OR `tips_type` != 'Collection')