SQL学习笔记之用通配符进行过滤

LIKE操作符

利用通配符可以对未知值进行过滤,创建特定数据的搜索模式
通配符:用来匹配值的一部分的特殊字符
搜索模式:由字面值、通配符或两者组合构成的搜索条件
在句子中使用通配符必须使用LIKE操作符
通配符只能用于文本字段,非文本数据类型不能使用通配符搜索

百分号(%)通配符

%表示任何字符出现任何次数(包括0次)

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';

找出所有名字以Fish开头的产品
通配符可以在搜索中的任意位置使用,并且可以使用多个通配符

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '%bean bag%';

找出所有名字中任意位置包含bean bag的产品

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'F%y';

找出产品名以F开头y结尾的所有产品

PS:子句WHERE prod_name LIKE 'F%y’只匹配以F开头、以y结尾的产品名。如果值后面跟空格,则不是以y结尾,所以Fish bean bag toy就不会被检索出来。简单的解决办法是给搜索模式再增加一个%号:'F%y%'还匹配y之后的所有字符(如空格)

通配符%不能匹配NULL

下划线(_)通配符

用于匹配单个字符,有多少个下划线就匹配多少个字符,不能多也不能少

SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE '__ inch tedddy bear';
#和 prod_name LIKE '% inch teddy bear'的检索结果不一样

%能匹配任意个数字符,而_只能匹配限定个数字符

方括号([])通配符

方括号通配符用来指定一个字符集,它必须匹配字符集中的一个字符
只有Access和SQL Server支持创建集合[]

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%';

找出所有名字以J或M开头的联系人
[]用于匹配任意方括号中的字符,但是一次只匹配单个字符
可以用前缀 ^ 来否定

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%';

查询不以J或M开头的任意人名
也可以使用NOT操作符得到相同的结果
WHERE NOT cust_contact LIKE '[JM]%'

通配符的使用技巧

不要过度使用通配符,如果其他操作能达到相同目的尽量使用其他操作符,通配符耗费时间更长
要注意通配符放置的位置
使用通配符时尽量不要放在搜索模式开始的位置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值