MySQL 通配符



MySQL 通配符

MySQL 的通配符是特殊字符,与 LIKE 运算符结合使用,用于在表列中搜索文本模式。MySQL 提供两种通配符:百分号 (%) 和下划线 (_) 。

下表列出了 MySQL 中两种通配符的用例:

序号 通配符 & 描述
1

百分号 (%)

匹配零个或多个字符。例如,'a%' 匹配以 'a' 开头的字符串,例如 'android' 或 'aeroplane'。

2

下划线 (_)

匹配单个字符。例如,'_un' 匹配以 'un' 结尾的三个字符的字符串,例如 'gun' 或 'bun'。

语法

以下是 MySQL 中 % 和 _ 通配符的语法:

SELECT * FROM table_name
WHERE column_name LIKE wildcard;

通配符可以组合使用。下表演示了在 WHERE 子句中使用 '%' 和 '_' 与 LIKE 运算符的不同方法:

序号 语句 & 描述
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 姓名 年龄 地址 薪水
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 表中检索薪水以 2000 开头的所有记录:

SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '2000%';

输出

以上查询的输出如下:

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
3 Kaushik 23 Kota 2000.00

示例

在下面的查询中,我们正在获取地址以 'D' 开头并以 'i' 结尾的所有记录:

SELECT * FROM CUSTOMERS
WHERE ADDRESS LIKE 'D%i';

输出

执行给定查询后,输出显示如下:

ID 姓名 年龄 地址 薪水
2 Khilan 25 Delhi 1500.00

示例

在这里,我们正在查找地址以 'd' 结尾的所有记录:

SELECT * FROM CUSTOMERS
WHERE ADDRESS LIKE '%d';

输出

当我们执行以上查询时,获得的输出如下:

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
6 Komal 22 Hyderabad 4500.00

示例

在下面的查询中,我们尝试获取薪水中任何位置都有 '1' 的所有记录:

SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '%1%';

输出

以上查询产生的输出如下:

ID 姓名 年龄 地址 薪水
2 Khilan 25 Delhi 1500.00
7 Muffy 24 Indore 10000.00

MySQL 下划线 _ 通配符

MySQL 下划线通配符代表在其使用位置的单个字符。当它与 WHERE 子句中的 LIKE 运算符结合使用时,下划线通配符允许您搜索与具有单个字符占位符的特定模式匹配的值。

示例

在这里,我们检索所有 NAME 以某个字符开头,后跟 'ardik' 的 CUSTOMERS -

SELECT * FROM CUSTOMERS
WHERE NAME LIKE '_ardik';

输出

让我们编译并运行查询,以产生以下结果 -

ID 姓名 年龄 地址 薪水
5 Hardik 27 Bhopal 8500.00

示例

现在,我们正在检索所有 NAME 以 'M' 开头,后跟任何字符,再跟 'f',再跟任何字符,最后跟 'y' 的 CUSTOMERS -

SELECT * FROM CUSTOMERS
WHERE NAME LIKE 'M_f_y';

输出

当我们执行以上查询时,获得的输出如下:

ID 姓名 年龄 地址 薪水
7 Muffy 24 Indore 10000.00

示例

在下面的查询中,我们检索所有 SALARY 在第二、第三和第四位上具有 '500' 的记录 -

SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '_500%';

输出

执行给定查询后,输出显示如下:

ID 姓名 年龄 地址 薪水
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 姓名 年龄 地址 薪水
4 Chaitali 25 Mumbai 6500.00

示例

以下查询检索所有 NAME 在第二位具有 'h' 且以 'i' 结尾的记录 -

SELECT * FROM CUSTOMERS
WHERE NAME LIKE '_h%i';

输出

如果我们编译并运行查询,则结果如下所示 -

ID 姓名 年龄 地址 薪水
4 Chaitali 25 Mumbai 6500.00
广告