我有一个查询:
select * from table where license='92cbb46d087' and email='email@gmail.com' and comments NOT LIKE '%0da44455%';
如果我继续删除comments
,它将返回1条记录。即使我将NOT LIKE字符串更改为任何内容,但它没有打印记录。
我想要找到的任何与许可证和电子邮件匹配的许可证,并且其注释记录中不包含特定的付款ID。实际上,comments
列中的表中不存在'%0da44455%'或'%xxxyyxxysss%'或任何随机字符串。
答案 0 :(得分:2)
如果comments
列可以具有NULL
值,那么您将不会从NOT LIKE
和LIKE
条件中获得任何输出。
您需要编写类似以下内容的内容:
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