MySQL不喜欢,并能够找到记录

时间:2019-11-19 05:01:03

标签: mysql

我有一个查询:

select * from table where license='92cbb46d087' and email='email@gmail.com' and comments NOT LIKE '%0da44455%';

如果我继续删除comments,它将返回1条记录。即使我将NOT LIKE字符串更改为任何内容,但它没有打印记录。

我想要找到的任何与许可证和电子邮件匹配的许可证,并且其注释记录中不包含特定的付款ID。实际上,comments列中的表中不存在'%0da44455%'或'%xxxyyxxysss%'或任何随机字符串。

2 个答案:

答案 0 :(得分:2)

如果comments列可以具有NULL值,那么您将不会从NOT LIKELIKE条件中获得任何输出。

您需要编写类似以下内容的内容: WHERE (ISNULL(comments,'')) NOT LIKE '%0da44455%'

其背后的原因仅仅是因为这些条件不知道如何使用null值您如何将null和不存在的事物比较为空不存在?

答案 1 :(得分:0)

让我们使用subquery并选择大小写以过滤掉这些not like注释。

select * from (select case when coalesce(comments, '') not like '%0da44455%' then 1 else 0 end as tagCom
    , * from table where license='92cbb46d087' and email='email@gmail.com') t1
where t1.tagCom = 0