SQL回炉重造04_数据过滤_通配符&LIKE

10 篇文章 0 订阅

数据过滤——通配符

  • 通配符(wildcard):用来匹配值的一部分的特殊字符
  • 搜索模式(search pattern):由字面值、通配符或两者组合构成的搜索条件
  • LIKE操作符:为了在搜索子句使用通配符,需要使用LIKE操作符,LIKE操作符指示数据库,后面跟着的搜索模式会利用通配符匹配而不是直接相等匹配。
    • 谓词(predicate):从技术上讲,LIKE是谓词而不是操作符,虽然最终得到的结果是相同的。

1. 百分号%通配符

  • %通配符是最常使用的通配符,在搜索串中,%表示任何字符出现任意次数
  • 区分大小写:MySQL的配置方式中,搜索是区分大小写的
  • 通配符可以在搜索模式中任意位置使用,且可以使用多个通配符
  • 注意尾空格:尾空格可能会干扰通配符的匹配,例如在保存词anvil时,如果它后面有一个或多个空格,那么子句WHERE prod_name LIKE '%anvil'将不会匹配到它,因为结尾的l后有多余的字符。解决问题的一个简单办法是在搜索模式结尾再附加一个%,更好的办法是使用函数去掉首尾空格。
  • 可以匹配0个字符:除了一个和多个字符外,%还可以匹配0个字符
  • 注意NULL:虽然%看起来可以匹配任何东西,但是它依然不能匹配到NULL值
# 找到所有以jet起头的词
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE 'jet%'

# 找到任何包含anvil的值
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '%anvil%'

# 找到以s起头,以e结尾的所有产品
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE 's%e'

2. 下划线(_)通配符

  • 下划线通配符的用途与%一样,不同的是,下划线只匹配单个字符而不是多个字符
  • 事实上,当知道要查询的值有几个字符时,就可以使用下划线通配符
# 查询有3个字符的行
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '___'

_总是匹配一个字符,不会多也不会少

3. 使用通配符的技巧

通配符对我们而言是“高效的”,但这种高效是有代价的,使用通配符搜索的处理一般要比之前讨论过的所花时间更长。

  • 不要过度使用通配符,如果其他操作符可以达到相同目的,优先使用其他操作符
  • 在确实需要使用通配符时,除非绝对必要,否则不要用在搜索模式的开始处,将通配符置于搜索模式的开始处搜索速度是最慢的
  • 注意通配符的位置,如果位置不对,可能不会返回想要的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值