SQL基本操作之使用通配符进行过滤

之前介绍的过滤方法均是面对已知值的,当我们需要检出未知值的数据便显得不够用,比如选出名称中带有bag的所有产品等。

这篇博文会介绍如何通过通配符进行过滤。

通配符: 用于匹配值的一部分的特殊字符
搜索模式: 由字面值、通配符或两者构成的搜索条件 ,类似于正则表达式

1. 百分号(%)通配符

百分号(%)通配符是最常使用的通配符,在搜索串中,百分号表示任意数量的任意字符。
例如:

选出所有产品名以Fish开头的产品的ID:

SELECT prod_id
From Products
WHERE prod_name LIKE 'Fish%';

其中LIKE是一种操作符,表示与后跟的搜索模式匹配。

选出产品名包含Fish的产品的ID:

SELECT prod_id
From Products
WHERE prod_name LIKE '%Fish%';

根据部分信息搜索邮件地址:

SELECT email
From Emails
WHERE email LIKE 'b%@outlook.com';

注意:

  1. %通配符可以匹配0、1、多个字符,但是不能匹配NULL
  2. 搜索模式区分大小写
  3. Microsoft Access使用*而不是%
  4. 许多DBMS会用空格填补字段的内容,比如某列有五十字符,但存储的文本只有17个字符,剩下的都用空格来填补,此时我们需要对搜索模式进行修改,或者使用函数去掉空格
2. 下划线(_)通配符

下划线(_)通配符的作用为匹配任意单个字符。

例如:匹配所有大小为两位数的玩具熊

SELECT prod_id
From Products
WHERE prod_name LIKE '__ inch teddy bear';

_只能刚好匹配一个字符,不能多也不能少。

方括号([])通配符(只有Mircoss Access和SQL server支持)

方括号([])通配符用于指定一个字符集,必须匹配字符集中的其中一个字符。

示例:
1, 检索出所有名字以F或M开头的用户的用户名

SELECT prod_id
From Products
WHERE prod_name LIKE '[JM]%';

2, 检索出所有名字不是以F或M开头的用户的用户名

SELECT prod_id
From Products
WHERE prod_name LIKE '[!JM]%';

其中在有些DMBS中可以将!替换为^,或者使用NOT子句。

注意:

  1. 不要过度使用通配符,能不用就不用
  2. 有必要使用通配符时,尽量不要放在搜索模式的开始处
  3. 仔细注意通配符的位置

总而言之,通配符是一种极其有用且重要的搜索工具,应善加利用。

参考:《SQL必知必会》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值