通配符
通配符可用于替代字符串中的任何其他字符。
在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
SQL 通配符用于搜索表中的数据。
在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] |
不在字符列中的任何单一字符 |
演示数据库
在猿变手册教程中,我们将使用 yuanbian 样本数据库。
下面是选自 "articles" 表的数据:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
% 通配符
通配符示例 1
下面的 SQL 语句选取作者以"猿" 开始的所有文章:
SELECT * FROM articles
WHERE author LIKE '猿%';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
通配符示例 2
下面的 SQL 语句选取 title 包含模式 "python" 的所有文章:
SELECT * FROM articles
WHERE title LIKE '%python%';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
+----+--------------+----------+--------+---------------------+
_ 通配符
_ 通配符示例 1
下面的 SQL 语句选取 author 以一个任意字符开始,然后是 "猿" 的所有文章:
SELECT * FROM articles
WHERE author LIKE '_猿';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
+----+--------------+----------+--------+---------------------+
_ 通配符示例 2
下面的 SQL 语句选取 title 以 "h" 开始,然后是一个任意字符,然后是 "d",然后是一个任意字符,然后是 "op" 的所有文章:
SELECT * FROM articles
WHERE title LIKE 'h_d_op%';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
+----+--------------+----------+--------+---------------------+
[charlist] 通配符
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
REGEXP示例 1
下面的 SQL 语句选取title 以 "p"、"J" 开始的所有文章:
SELECT * FROM articles
WHERE title REGEXP '^[pJ]';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
+----+--------------+----------+--------+---------------------+
REGEXP示例 2
下面的 SQL 语句选取 name 以 A 到 H 字母开头的网站:
SELECT * FROM articles
WHERE title REGEXP '^[A-H]';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | JavaScript | 猿媛 | 20 | 2005-11-3 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-7 18:40:00 |
+----+--------------+----------+--------+---------------------+
REGEXP示例 3
下面的 SQL 语句选取 name 不以 A 到 H 字母开头的网站:
SELECT * FROM articles
WHERE title REGEXP '^[^A-H]';
执行输出结果:
+----+--------------+----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------+---------—+--------+---------------------+
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
+----+--------------+----------+--------+---------------------+
讨论区