首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL NOT LIKE和LIKE

SQL NOT LIKE和LIKE
EN

Stack Overflow用户
提问于 2012-07-28 07:59:19
回答 3查看 655关注 0票数 3

我在理解SQL中的LIKE和NOT LIKE运算符时遇到了问题。这是我执行的一个查询:

代码语言:javascript
复制
select serial_number from UNIT U 
group by serial_number
order by serial_number

这将产生2000个结果。

当我执行这个查询时,我得到1950个结果:

代码语言:javascript
复制
select serial_number from UNIT U 
WHERE op_name LIKE 'Assembly'
group by serial_number
order by serial_number

因此,当我执行这个查询时,我希望得到50个结果,但结果却是2000个:

代码语言:javascript
复制
select serial_number from UNIT U 
WHERE op_name NOT LIKE 'Assembly'
group by serial_number
order by serial_number

有什么解释吗?非常感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-28 08:13:29

您正在进行的组操作使您尝试进行的计数比较变得不再有效。假设您有10个唯一的序列号,每个序列号都有两行(总共20行),一行是op_name "Xyz",另一行是op_name "Assembly“。您的第一个查询将返回10行。您的第二个查询将返回10行。您的第三个查询将返回10行。因为这个组,像"Assembly“和不像"Assembly”并不是相互排斥的。

票数 3
EN

Stack Overflow用户

发布于 2012-07-28 08:07:54

NULL既不是LIKE,也不是NOT LIKE

实际上,重新仔细阅读你的数据,可能还有另一个原因。(我之前的观点是正确的,但这更有可能。)

假设您有以下数据:

代码语言:javascript
复制
serial_number | op_name
--------------+---------
1             | Assembly
1             | Not

两个查询都将返回1

票数 2
EN

Stack Overflow用户

发布于 2012-07-28 08:05:07

没有通配符%,您的LIKE就像=一样运行。

检查并查看可能的值are...most如果您使用的是LIKE,则还需要使用通配符,例如:

select serial_number from UNIT U WHERE op_name NOT LIKE '%Assembly%‘group by serial_number order by serial_number

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11697066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档