SQL 通配符查询 REGEXP

sql中通配符通常与like语句一起使用或者 与 REGEXP 运算符来操作正则表达式一起使用。

sql中的通配符

通配符 描述
% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或[!charlist] 不在字符列中的任何单一字符

实例数据

+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | 百度        | https://www.baidu.cm/    |     1 | CN     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  3 | 微博           | http://weibo.com/         |    20 | CN      |
|  4 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  5 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+

%通配符

查询url中以'https'开头的数据

sql > SELECT * FROM website WHERE url LIKE 'https%';

+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  1 | 百度        | https://www.baidu.cm/    |     1 | CN     |
|  2 | 淘宝          | https://www.taobao.com/   |    13 | CN      |
|  4 | Facebook      | https://www.facebook.com/ |     3 | USA     |
+----+---------------+---------------------------+-------+---------+

_ 通配符

SQL 语句选取 name 以一个任意字符开始,然后是 "book" 的所有数据:

SELECT * FROM website WHERE name LIKE '_book';

+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  4 | Facebook      | https://www.facebook.com/ |     3 | USA     |
+----+---------------+---------------------------+-------+---------+

[charlist] 通配符

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

下面的 SQL 语句选取 name 以 "F" 或 "s" 开始的所有数据:

SELECT * FROM website WHERE name REGEXP '^[Fs]';

+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  4 | Facebook      | https://www.facebook.com/ |     3 | USA     |
|  5 | stackoverflow | http://stackoverflow.com/ |     0 | IND     |
+----+---------------+---------------------------+-------+---------+

下面的 SQL 语句选取 name 以 A 到 H 字母开头的数据:

SELECT * FROM website WHERE name REGEXP '^[A-H]';

+----+---------------+---------------------------+-------+---------+
| id | name          | url                       | alexa | country |
+----+---------------+---------------------------+-------+---------+
|  4 | Facebook      | https://www.facebook.com/ |     3 | USA     |
+----+---------------+---------------------------+-------+---------+

备注:本文连接地址 https://www.catroom.com.cn/article/sql_regexp , 转载请注明出处