LIKE操作符及通配符%、_ - 过滤数据

阅读:129
	上一节,讲到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操作符用于检索未知条件,一般和通配符配合使用。
  • 通配符只能用于字符型的列匹配,不能用于数值型。
  • 百分号通配符用于匹配一个或者多个字符。
  • 下划线通配符用于匹配单个字符。

读后有收获,请作者喝杯咖啡

全部评论

发表评论
更多精彩内容,请关注微信公众号