SQL必知必会学习笔记(2)—— 通配符过滤 %,_ ,[ ]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/89557350

1 like操作符

  • 通配符本身实际上是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符。为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。
  • 通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索。

2 谓词(predicate)

操作符何时不是操作符?答案是,它作为谓词时。从技术上说,LIKE是谓词而不是操作符。

3 % 通配符

  • 表示任何字符出现任意次数
SELECT prod_id,prod_name
from products
where prod_name like 'TNT%';

在这里插入图片描述

  • 通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符;
SELECT prod_id,prod_name
from products
WHERE prod_name like '%ton%';

在这里插入图片描述

  • % 不会匹配 NULL
    原表
    在这里插入图片描述
SELECT cust_id,cust_email from customers
where cust_email like '%';

在这里插入图片描述

4 _ 通配符

  • 只能匹配单个字符

5 [] 通配符

  • 方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。
SELECT cust_name from customers
where cust_name REGEXP '^[CM]';

在这里插入图片描述

6 MySQL使用正则表达式

MySQL仅支持多数正则表达式实现的一个很小的子集。
在这里插入图片描述


SELECT prod_name
from products
where prod_name REGEXP '1000'
order by prod_name;

在这里插入图片描述


SELECT prod_name
from products
where prod_name REGEXP '.000'
order by prod_name;

在这里插入图片描述


6.1 LIKEregexp 区别

  • like 匹配整个列;
  • regexp 在列值内进行匹配;

6.2 MySQL正则匹配不区分大小写

  • 为了区分大小写,可以使用关键字 binary
SELECT prod_name
from products
WHERE prod_name REGEXP BINARY 'JetPack .000'
order by prod_name;

在这里插入图片描述

7 通配符使用技巧

通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。

  1. 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
  2. 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
  3. 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/89557350