SQL 通配符

SQL 通配符 #

通配符可用于替代字符串中的任何其他字符。

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

SQL 通配符用于搜索表中的数据。

在 SQL 中,可使用以下通配符:

|通配符 | 描述 | #

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

使用 SQL % 通配符 #

下面的 SQL 语句选取 domainname 以字母 “a” 开始的所有网站:

MariaDB [learnsql]> select * from domains where domainname like 'a%';
+----+-----------+------------+------------+------------+
| ID | ICP       | DomainName | RegDate    | EndDate    |
+----+-----------+------------+------------+------------+
| 15 | namesilo  | aosp.me    | 2016/3/17  | 2023/3/17  |
| 21 | namesilo  | avlist.top | 2021/6/5   | 2023/6/5   |
| 44 | dnspod.cn | alair.cn   | 2021-08-06 | 2022-12-10 |
+----+-----------+------------+------------+------------+
3 rows in set (0.009 sec)

下面的 SQL 语句选取 url 包含模式 “a” 的所有记录:

MariaDB [learnsql]> select * from domains where domainname like '%a%';
+----+-----------+---------------+------------+------------+
| ID | ICP       | DomainName    | RegDate    | EndDate    |
+----+-----------+---------------+------------+------------+
| 13 | namesilo  | raspi.in      | 2014/2/27  | 2023/2/27  |
| 15 | namesilo  | aosp.me       | 2016/3/17  | 2023/3/17  |
| 16 | namesilo  | bailuyuan.org | 2017/3/23  | 2023/3/23  |
| 21 | namesilo  | avlist.top    | 2021/6/5   | 2023/6/5   |
| 44 | dnspod.cn | alair.cn      | 2021-08-06 | 2022-12-10 |
| 46 | dnspod.cn | nasplus.cn    | 2022-01-28 | 2023-03-08 |
| 47 | dnspod.cn | manjushri.cn  | 2022-01-28 | 2023-03-11 |
| 52 | gandi.net | mua.wiki      | 2022/7/19  | 2023/7/19  |
+----+-----------+---------------+------------+------------+
8 rows in set (0.001 sec)

使用 SQL _ 通配符 #

下面的 SQL 语句选取 domainname 以一个任意字符开始,然后是 “osp.me” 的所有记录:

MariaDB [learnsql]> select * from domains where domainname like '_osp.me';
+----+----------+------------+-----------+-----------+
| ID | ICP      | DomainName | RegDate   | EndDate   |
+----+----------+------------+-----------+-----------+
| 15 | namesilo | aosp.me    | 2016/3/17 | 2023/3/17 |
+----+----------+------------+-----------+-----------+
1 row in set (0.000 sec)

下面的 SQL 语句选取 domainname 以 “av” 开始,然后是一个任意字符,然后是 “i”,然后是一个任意字符,然后是 “t.top” 的所有网站:

MariaDB [learnsql]> select * from domains where domainname like 'av_i_t.top';
+----+----------+------------+----------+----------+
| ID | ICP      | DomainName | RegDate  | EndDate  |
+----+----------+------------+----------+----------+
| 21 | namesilo | avlist.top | 2021/6/5 | 2023/6/5 |
+----+----------+------------+----------+----------+
1 row in set (0.000 sec)

使用 SQL [charlist] 通配符 #

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

下面的 SQL 语句选取 domainname 以 “a”、“b” 或 “s” 开始的所有记录:

MariaDB [learnsql]> SELECT * FROM domains WHERE domainname REGEXP '^[abs]';
+----+-----------+---------------+------------+------------+
| ID | ICP       | DomainName    | RegDate    | EndDate    |
+----+-----------+---------------+------------+------------+
| 12 | namesilo  | blbl.dev      | 2020/1/17  | 2023/1/17  |
| 15 | namesilo  | aosp.me       | 2016/3/17  | 2023/3/17  |
| 16 | namesilo  | bailuyuan.org | 2017/3/23  | 2023/3/23  |
| 21 | namesilo  | avlist.top    | 2021/6/5   | 2023/6/5   |
| 22 | google    | suopo.net     | 2020/6/17  | 2023/6/17  |
| 44 | dnspod.cn | alair.cn      | 2021-08-06 | 2022-12-10 |
| 50 | dnspod.cn | byhzg.cn      | 2022-01-28 | 2023-04-14 |
+----+-----------+---------------+------------+------------+
7 rows in set (0.000 sec)

下面的 SQL 语句选取 domainname 以 g 到 s 字母开头的记录:

MariaDB [learnsql]> SELECT * FROM domains WHERE domainname REGEXP '^[g-s]';
+----+-----------+--------------+------------+------------+
| ID | ICP       | DomainName   | RegDate    | EndDate    |
+----+-----------+--------------+------------+------------+
|  4 | namesilo  | getos.org    | 2016/10/9  | 2022/10/9  |
|  7 | wanwang   | lyq.wiki     | 2018/12/27 | 2022/12/28 |
|  8 | namesilo  | les.moe      | 2015/12/31 | 2022/12/31 |
|  9 | namesilo  | regex.in     | 2020/1/3   | 2023/1/3   |
| 13 | namesilo  | raspi.in     | 2014/2/27  | 2023/2/27  |
| 14 | namesilo  | pornie.in    | 2016/3/10  | 2023/3/10  |
| 17 | wanwang   | linuxuc.com  | 2016/3/24  | 2023/3/24  |
| 22 | google    | suopo.net    | 2020/6/17  | 2023/6/17  |
| 24 | namesilo  | ltecn.com    | 2014/7/26  | 2025/7/26  |
| 25 | namesilo  | pornie.top   | 2016/3/10  | 2027/3/10  |
| 46 | dnspod.cn | nasplus.cn   | 2022-01-28 | 2023-03-08 |
| 47 | dnspod.cn | manjushri.cn | 2022-01-28 | 2023-03-11 |
| 48 | dnspod.cn | pushto.cn    | 2022-01-28 | 2023-03-12 |
| 49 | dnspod.cn | gfwlist.cn   | 2022-01-28 | 2023-03-23 |
| 52 | gandi.net | mua.wiki     | 2022/7/19  | 2023/7/19  |
+----+-----------+--------------+------------+------------+
15 rows in set (0.001 sec)

下面的 SQL 语句选取 name 不以 b 到 k 字母开头的记录:

MariaDB [learnsql]> SELECT * FROM domains WHERE domainname REGEXP '^[^k-s]';
+----+-----------+---------------+------------+------------+
| ID | ICP       | DomainName    | RegDate    | EndDate    |
+----+-----------+---------------+------------+------------+
|  4 | namesilo  | getos.org     | 2016/10/9  | 2022/10/9  |
|  6 | wanwang   | dotbbq.com    | 2017/10/28 | 2022/10/28 |
| 12 | namesilo  | blbl.dev      | 2020/1/17  | 2023/1/17  |
| 15 | namesilo  | aosp.me       | 2016/3/17  | 2023/3/17  |
| 16 | namesilo  | bailuyuan.org | 2017/3/23  | 2023/3/23  |
| 18 | namesilo  | ustv.xyz      | 2018/3/24  | 2023/3/25  |
| 19 | wanwang   | unixetc.com   | 2017/3/30  | 2023/3/30  |
| 20 | namesilo  | ciux.org      | 2010/4/26  | 2023/4/26  |
| 21 | namesilo  | avlist.top    | 2021/6/5   | 2023/6/5   |
| 43 | dnspod.cn | zjq.xyz       | 2021-08-06 | 2022-10-24 |
| 44 | dnspod.cn | alair.cn      | 2021-08-06 | 2022-12-10 |
| 45 | dnspod.cn | ymqd.net      | 2022-01-28 | 2023-03-03 |
| 49 | dnspod.cn | gfwlist.cn    | 2022-01-28 | 2023-03-23 |
| 50 | dnspod.cn | byhzg.cn      | 2022-01-28 | 2023-04-14 |
+----+-----------+---------------+------------+------------+
14 rows in set (0.000 sec)