用通配符进行过滤
通配符本身实际上是SQL的WHERE子句中由特殊含义的字符,SQL支持几种通配符。在搜索子句中使用通配符,必须使用LIKE操作符。
通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
任何通配符前面必须配合LIKE 关键字使用
1、百分号%通配符
%表示任何字符出现任意次数。
```sql server
SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE 'Fish%';
>通配符可在搜索模式中的任意位置使用,并且可以使用过多个通配符。
```sql server
SELECT prod_id,prod_name FROM Products WHERE prod_name LIKE '%bean bag%';
注意
①%代表搜索模式中给定位置的0个、1个或多个字符。
②有些DBMS用空格来填补字段的内容,例如某列有20个字符,而存储的文本为10个字符,则会添加10个空格。但是使用'k%j%'这样的搜索方式是不会匹配后面带有空格的字符串(kaij空格空格)。简单的解决办法是在后面在加入一个百分号('k%j%%')。或者使用函数。
③通配符%不能匹配产品名称为NULL的行。
2、下划线 _ 通配符
只匹配单个字符,而不是多个字符
```sql server
SELECT prod_id,prod_name FROM Products WHERE prodname LIKE ' inch teddy BEAR';
3、方括号[]通配符
用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。
```sql server
SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[JM]%';
**^此通配符表示 否定,也可以理解为NOT**
```sql server
SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[^JM]%';
SELECT cust_contact FROM Customers WHERE NOT cust_contact LIKE '[JM]%';