MySQL - 通配符
MySQL 通配符
MySQL 通配符 是与 LIKE 运算符结合使用的特殊字符,用于在表列中搜索文本模式。 MySQL 提供两种通配符:百分号 (%) 和下划线 (_)。
下表列出了 MySQL 中这两种通配符的用法 -
S.NO | 通配符及说明 |
---|---|
1 |
百分号 (%) 匹配零个或一个字符。例如,"a%"匹配以"a"开头的字符串,例如"android"或"aeroplane"。 |
2 |
下划线 (_) 匹配单个字符。例如,"_un"匹配以"un"结尾的三个字符的字符串,例如"gun"或"bun"。 |
语法
以下是 MySQL 中 % 和 _ 通配符的语法 -
SELECT * FROM table_name WHERE column_name LIKE wildcard;
通配符可以相互组合使用。下表演示了在 WHERE 子句中将"%"和"_"与 LIKE 运算符结合使用的不同方法 -
S.NO | 语句 &说明 |
---|---|
1 |
WHERE SALARY LIKE '200%' 查找以 200 开头的任何值。 |
2 |
WHERE SALARY LIKE '%200%' 查找任意位置包含 200 的任何值。 |
3 |
WHERE SALARY LIKE '_00%' 查找第二个和第三个位置包含 00 的任何值职位。 |
4 |
WHERE SALARY LIKE '2_%_%' 查找以 2 开头且长度至少为 3 个字符的任何值。 |
5 |
WHERE SALARY LIKE '%2' 查找以 2 结尾的任何值。 |
6 |
WHERE SALARY LIKE '2%0' 查找以 2 开头且以0. |
7 |
WHERE SALARY LIKE '_2%3' 查找第二个位置为 2 且以 3 结尾的任何值。 |
8 |
WHERE SALARY LIKE '2___3' 查找五位数字中以 2 开头且以 3 结尾的任何值。 |
MySQL 百分号 % 通配符
MySQL % 通配符是 SQL 查询中用于模式匹配的符号。它表示字符串中的任意字符序列(包括零个字符)。
当 % 与 WHERE 子句中的 LIKE 运算符一起使用时,它允许您搜索与指定模式匹配的值。
示例
首先,让我们使用以下查询创建一个名为 CUSTOMERS 的表 -
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(25) NOT NULL, SALARY DECIMAL(18, 2), PRIMARY KEY(ID) );
现在,让我们使用 INSERT 语句将值插入到上面创建的表中,如下所示 -
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
获得的 CUSTOMERS 表如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
这里,我们从 CUSTOMERS 表中检索所有 SALARY 以 2000 开头的记录 -
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '2000%';
输出
上述查询的输出如下所示 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
示例
在以下查询中,我们将获取所有 ADDRESS 以"D"开头且以"i"结尾的记录 -
SELECT * FROM CUSTOMERS WHERE ADDRESS LIKE 'D%i';
输出
执行给定查询后,输出显示如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
示例
这里,我们查找所有 ADDRESS 以 'd' 结尾的记录 -
SELECT * FROM CUSTOMERS WHERE ADDRESS LIKE '%d';
输出
执行上述查询后,输出如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
示例
在以下查询中,我们尝试获取 SALARY 中任意位置为"1"的所有记录 -
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '%1%';
输出
上述查询的输出如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
MySQL 下划线通配符 _
MySQL 下划线通配符在其使用位置表示单个字符。当与 WHERE 子句中的 LIKE 运算符结合使用时,下划线通配符允许您搜索与单个字符占位符匹配特定模式的值。
示例
在这里,我们检索所有 NAME 以某个字符开头,后跟 'ardik' 的客户 -
SELECT * FROM CUSTOMERS WHERE NAME LIKE '_ardik';
输出
编译并运行查询,结果如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
5 | Hardik | 27 | Bhopal | 8500.00 |
示例
现在,我们检索所有 NAME 以"M"开头,后跟任意字符,后跟"f",后跟任意字符,后跟"y"的客户 -
SELECT * FROM CUSTOMERS WHERE NAME LIKE 'M_f_y';
输出
执行上述查询后,输出如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
7 | Muffy | 24 | Indore | 10000.00 |
示例
在下面的查询中,我们将检索 SALARY 中第二、第三和第四个位置包含"500"的所有记录 -
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '_500%';
输出
执行给定查询后,输出显示如下 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
示例
在以下查询中,我们将检索所有 ADDRESS 以"M"开头且长度至少为 3 个字符的记录 -
SELECT * FROM CUSTOMERS WHERE ADDRESS LIKE 'M_%_%';
输出
上述查询的输出如下所示 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
4 | Chaitali | 25 | Mumbai | 6500.00 |
示例
以下查询检索 NAME 第二个位置包含"h"且以"i"结尾的所有记录 -
SELECT * FROM CUSTOMERS WHERE NAME LIKE '_h%i';
输出
如果我们编译并运行查询,结果将如下所示 -
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
4 | Chaitali | 25 | Mumbai | 6500.00 |