使用通配符进行过滤
通配符:用来匹配值的一部分的特殊字符
搜索模式:由字面值、通配符或两者组成的搜索条件
在搜索子句使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是相等匹配进行比较
1.%通配符,表示任何字符出现任意次数
select prod_id,prod_name
from products
where prod_name LIKE 'jet%';
检索任意以
jet
起头的词
select prod_id,prod_name
from products
where prod_name LIKE '%anvil%';
匹配任何位置包含文本anvil的值,而不论它之前或之后出现什么字符
使用'%'不能匹配用值NULL作为产品名的行
2. _ 通配符,只能匹配单个字符
select prod_id,prod_name
from products
where prod_name LIKE '_ ton anvil';
匹配1 ton anvil, 2 ton anvil. 而 .5 ton anvil产品没有匹配不要过度使用通配符,尽量不要把通配符置于搜索模式的起始处
用正则表达式进行搜索
使用REGEXP操作符连接
select prod_name
from products
where prod_name REGEXP '.000';
1.正则表达式 . 表示匹配任意一个字符
LIKE和REGEXP之的差别:
LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。
2.正则表达式 |
select prod_name
from products
where prod_name REGEXP '1000|2000';
3. 正则表达式[ ]
select prod_name
from products
where prod_name REGEXP '[123] Ton';
[123]定义一组字符,它的意思是匹配1或2或3,为[1|2|3]Ton的缩写,也可简化为[1-3]
select prod_name
from products
where prod_name REGEXP '\\.';
为了匹配特殊字符,必须用 \\ 为前导。 \\ - 表示查找 - , \\ . 表示查找.