如果不知道要过滤的具体条件怎么查询呢?用模糊查询
数据过滤- WHERE [列] LIKE、通配符(_%)、转义字符(\)
LIKE 模糊查询:非已知,不明确查询条件。
1. 通配符–下划线
(1)一个下划线_代表: 单个的任何字符(指一个字或字母或数字或字符)
(2)使用: WHERE [列名 ] LIKE ‘…_…’
文本要加引号!
(3)适合场景:知道字符数目;知道字符位置
所以会出现连续的下划线
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '奶_';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '薯_';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '_糖';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '__糖';
#最后一行写了两个下划线,要找的是三个字且最后一个字是糖
2. 通配符-百分号%
(1)%代表: 任意数目(包括0个)的任何字符
(2)使用: WHERE [列名 ] LIKE ‘…%…’
(3)适用范围: 不知道字符数目;知道字符位置
(就是知道在什么位置可能有一个或几个不知道的字符,也可以代表0个字符,即也可能没有字符)
所以不会出现连续的两个百分号
注:以通配符开头,查询效率低
(比如’奶_‘只需要搜索奶字开头的两个字词语,而’_糖’需要从头比对第二个字是否是糖字)
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '方%';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '%糖';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '方%面';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '方便%面';
SELECT m.* FROM milk_tea AS m WHERE m.prod_name LIKE '奶%';