LIKE操作符及通配符%、_ - 过滤数据
阅读:478 上一节,讲到IN、OR、AND、NOT操作符。本节将讲解LIKE操作符。
1. LIKE操作符
之前讲解的操作符都是检索条件都是已知的,比如价格大于5000小于10000。但是,很多条件是未知,比如检索所有商品名称以HUAWEI开头的,这个条件就是不确定的。
通配符,用来匹配值的一部分的特殊字符,用于文本字段搜索,不能用于非文本字段。
SQL支持好几种通配符,但是必须和LIKE一起使用,告诉DBMS,不是简单的相等或者不相等的匹配。
2. %通配符
%通配符表示,任何字符出现的次数。
例如检索所有商品名称以HUAWEI开头的,执行如下SQL:
mysql> SELECT id, pro_price, pro_name, pro_sku FROM t_product where pro_name LIKE 'HUAWEI%';
+----+-----------+---------------+---------+
| id | pro_price | pro_name | pro_sku |
+----+-----------+---------------+---------+
| 2 | 9800.00 | HUAWEI Mate40 | 1 |
| 6 | 5600.00 | HUAWEI P40 | 1 |
+----+-----------+---------------+---------+
2 rows in set (0.00 sec)
以上查询以HUAWEI开头,不管后面出现什么后者多个字符。
可以使用多个通配符,比如我们匹配,商品名字中有i的商品,执行以下SQL:
mysql> SELECT id, pro_price, pro_name, pro_sku FROM t_product where pro_name LIKE '%i%';
+----+-----------+---------------+---------+
| id | pro_price | pro_name | pro_sku |
+----+-----------+---------------+---------+
| 2 | 9800.00 | HUAWEI Mate40 | 1 |
| 4 | 4800.00 | XiaoMi 10 | 3 |
| 6 | 5600.00 | HUAWEI P40 | 1 |
+----+-----------+---------------+---------+
3 rows in set (0.00 sec)
注意,%通配符不能匹配NULL。
3. 下划线 _ 通配符
下划线_通配符,是匹配单个字符,不是多个字符。
注意:DB2不支持下划线通配符。Access使用的是?。
我们执行以下SQL:
mysql> SELECT id, pro_price, pro_name, pro_sku FROM t_product where pro_name LIKE '_pple phone 12';
+----+-----------+----------------+---------+
| id | pro_price | pro_name | pro_sku |
+----+-----------+----------------+---------+
| 1 | 12000.00 | Apple phone 12 | 2 |
+----+-----------+----------------+---------+
1 row in set (0.00 sec)
输出了pple phone 12前只有一个字符的商品。
4. 通配符使用技巧
由于通配符使用比精确的条件搜索耗费的时间更长,所以使用时注意:
- 尽量不要使用通配符。
- 如果避免不了使用通配符,尽量避免把通配符用于条件开始处。
总结:
- LIKE操作符用于检索未知条件,一般和通配符配合使用。
- 通配符只能用于字符型的列匹配,不能用于数值型。
- 百分号通配符用于匹配一个或者多个字符。
- 下划线通配符用于匹配单个字符。
赞赏支持
