sql like 通配符_SQL之斤斤计较

01748ff1f9f1d0c43f73c7311dee636b.png

“我不要你觉得,我要我觉得“

不知道大家有没有突然失忆的情况?

试图说明一件事情的经过,却只能结结巴巴地说个大概没法细细说清?

贫民,不,平民且亲切的SQL自然也是有相关的应对措施的。

杠精专场

“我不管我这个对不对,但你那个就是不对。”

成,今天先来介绍以下NOT(不是)的用法。

NOT IN

Not表示否认,在与 IN(之中)操作符联合使用时,NOT可以找出与条件列表不匹配的行。

找出在 (column) 列中除去括号内数值 (value_1, value_2, ...) 的所有行:

WHERE col_name 
NOT IN (value_1, value_2, ...)

IS NOT NULL

在MySQL中,NOT(不是)支持对IN(之中)、BETWEEN(之间) 和 EXISTS(存在)子句取反,甚至可以轻松去除空值。

找出列中所有非 (not) 空值 (null) 的行:

WHERE col_name IS NOT NULL

由于目前我们接触的例子相对简单,但是在复杂的子句中,NOT是非常有用的。

创个练习表

大家还记得如何创建新的工作表么?

#建立一个测试表,里面有id,语句和值:
CREATE TABLE 测试 (id int, 语句 varchar(100), 值 int);
#放入数据:
INSERT INTO 测试 
VALUE (1, "我觉得", 3), 
(2, "我不要你觉得", 6), 
(3, "我要我觉得", null), 
(4, "你觉得", 5);

看一下我们的表是什么样子的:

SELECT * FROM 测试

28a98fa67d7193f749a199ed9c936b16.png

否认举例

找出练习表中ID不是1和3的数据:

SELECT id, 语句
FROM 测试
WHERE id NOT IN (1, 3)

d86d0a6851eec4293fe1eec952617916.png

除空值举例

找出练习表中,值不是空值 (null) 的数据:

SELECT id, 语句, 值
FROM 测试
WHERE 值 IS NOT NULL

ffbb0f35a9e8474cea8656847d8830e6.png

懵懵懂懂

下面来介绍一下通配符 (wildcard)。Like是“像”的意思,与上文中粗暴的NOT不同的是,它为失忆症患者【划掉】,为只想要匹配“一部分数值”的用户提供了方便的搜索方法。

Like 的好伙伴有百分号(%)以及下划线(_)。

“%“式随性

百分号(%)比较随性,一个百分号便可匹配不论多少的任意字符。

找出所有以“我觉得”开头的值,并且接受“我觉得”之后的任意字符,不论多少,要注意的是,SQL在引号内部分区分大小写:

WHERE col_name LIKE '我觉得%'

中间出现“我觉得”:

WHERE col_name LIKE '%我觉得%'

以“你觉得”开头,“我觉得”结尾:

WHERE col_name LIKE '你觉得%我觉得'

这里要留要的是,尾空格会导致类似于“%我觉得”的值无法匹配到,因为在最后的“得”后有多余的字符(空格)。

“%”无法匹配NULL,因为NULL是空值,不存在。

“_“式单一

相比之下,下划线(_)比较严厉,每次只能匹配单个字符,不能多也不能少。

找出任意“X觉得”:

WHERE col_name LIKE '_ 觉得'

这里会返回类似于“我觉得”或者“你觉得”的值,但不会返回“我要我觉得”这些超出长度的值。

百分号举例

找出所有包含“觉得”二字的语句(%觉得%):

SELECT 语句
FROM 测试
WHERE 语句 LIKE "%觉得%"

92bcfbc0d3dff7c9dba1210e58b96eb2.png

下划线举例

找出所有为“X觉得”的语句:

SELECT 语句
FROM 测试
WHERE 语句 LIKE "_觉得"

3f01340766f291ecf9c5819f85571cac.png

小结

在寻找近似信息的时候,SQL还可以用正则(REGEXP)来处理,但由于这方面会涉及到一些别的表达式,我准备过段时间再细细说来。

复习一下今天的重点:

WHERE...LIKE...:寻找出近似值;

%:任何符合条件的语句数值,无论长短;

_:任何符合条件的语句数值,只能匹配单一值。

下划线的效果可以叠加哟:

SELECT 语句
FROM 测试
WHERE 语句 LIKE "___觉得" #这里有三个下划线!

bdcc88d076693d8e3e4cc0210ffaebdb.png

如果能熟练掌握对通配符的运用,那就可以有效应对突然失忆【不是】的症状了。


希望本文能帮助大家初步了解SQL的通配符概念,如果还是有什么疑问或是建议的话,欢迎留言询问~

祝各位学习愉快!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值