我在一家在后端使用Spring -Hibernate和mysql数据库的公司工作。
有一个表 tc_wallet
在此表中,我有一列 tips_type ,其值为
''
(空)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)检查/比较值时是否存在问题?
它的行为是否有所不同?
答案 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)