《MySQL必知必会》学习笔记——第八章(用通配符过滤)

前文连接:
《MySQL必知必会》——书中表的生成
《MySQL必知必会》——第三章(了解数据库和表) 关键词:USE、SHOW
《MySQL必知必会》——第四章(检索数据) 关键词:SELECT
《MySQL必知必会》——第五章(排序检索数据) 关键词:ORDER BY
《MySQL必知必会》——第六章(过滤数据) 关键词:WHERE
《MySQL必知必会》——第七章(数据过滤) 关键词:WHERE、AND、OR、IN

前面介绍的过滤数据,都是已知具体数据进行过滤,但有时我们需要一些模糊过滤,例如选出某列中包含特定文本的行(如选取文本中包含like的行),这时我们就需要用通配符去做,具体看下面:

8.1 LIKE操作符

LIKE操作符是WHERE语句下的子句操作符,其和通配符一起使用来对数据进行模糊匹配。

8.1.1 % 通配符

% 通配符表示: 任意字符出现任意次数,即匹配任意字符串 ,我们具体看看就懂:

# jet% 会去匹配任意以jet开头的词!
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%'

通配符可以在任意位置使用,也可以使用多个通配符,我们举例看看:

# %anvil% 匹配任意位置出现anvil的词!
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '%anvil%'
# s%e 匹配以s开头,以e结尾的任意词
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 's%e';

注意:

  • %可以匹配0个、1个或任一个字符串
  • 但不匹配NULL,即当某行为NULL时,是匹配不上的

8.1.2 _ 通配符

_(下划线)通配符 作用和%通配符一样,仅仅是只能匹配一个字符,而%通配符可以匹配任意多个字符!举例看看:

# _ ton anvil 仅仅匹配下划线处只有一位字符,并且后面要一致的字符串!,如下图所示:
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil';

注意:

  • % 可以匹配0、1、任意多个字符
  • _ 只能匹配一个字符,不能多也不能少

8.2 使用通配符的技巧

通过上面的举例,我们发现通配符是很有用的,但也是有代价的,因为通配符的搜索处理是通过遍历数据得到的,和前面过滤数据相比慢很多!

技巧:

  • 若其他操作也可以达到目的,尽量不要使用通配符
  • 在使用通配符时,尽量不要将其放在搜索模式的开头,这个位置是最慢的
  • 注意通配符放置的位置!

总结:

  • SELECT 列名 FROM 表名 WHERE 列名 LIKE ‘通配符’:匹配某字符的行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值