Sql 简明教程
SQL - Like Operator
The SQL LIKE Operator
SQL LIKE 运算符用于在表中检索基于指定模式的列中的数据。
与 UPDATE、DELETE 和 SELECT 语句的 WHERE 子句一起使用,以根据给定的模式过滤行。使用 Wildcards 指定这些模式。
假设我们需要提交所有以“K”开头的学生名单。我们可以在 LIKE 运算符的帮助下获取此列表,如下所示:
WHERE student_name LIKE 'K%';
此处, % 是通配符,表示零个、一个或多个字符。表达式 K% 指定它将显示所有名称 starts with “k”的学生的列表。
What are wild cards?
SQL 通配符是用于 SQL 查询中匹配数据模式的特殊字符。以下是 MySQL 数据库中与 LIKE 运算符结合使用的通配符:
S.No |
WildCard & Definition |
1 |
% 百分号表示零个、一个或多个字符。 |
2 |
_ 下划线表示单个数字或字符。 |
下表给出了一些示例,展示了包含“%”和“_”的不同 LIKE 运算符的 WHERE 子句:
S.No |
Statement & Description |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
WHERE SALARY LIKE '2___3' 在以 2 开头、以 3 结尾的五位数中查找任何值。 |
The '%' Wildcard character
% 符号表示零个或多个字符。“%”通配符匹配任何长度的字符串,甚至包括长度为零。
Example
为了更好地理解它,让我们考虑一下 CUSTOMERS 表,其中包含客户的个人详细信息,包括他们的姓名、年龄、地址和工资等,如下所示:
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
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 );
该表将按如下方式创建:
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 以 200 开头的记录:
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';
Output
这将产生以下结果 -
ID |
NAME |
AGE |
ADDRESS |
SALARY |
1 |
Ramesh |
32 |
Ahmedabad |
2000.00 |
3 |
Kaushik |
23 |
Kota |
2000.00 |
The '_' wildcard character
underscore 通配符表示单个数字或字符。单个“_”表示与“%”通配符类似的正好一个字符。
Example
以下是显示先前创建的 CUSTOMERS 表中所有 NAME 以 K 开头且长度至少为 4 个字符的记录的查询:
SELECT * FROM CUSTOMERS WHERE NAME LIKE 'K___%';
LIKE operator with OR
我们还可以使用 AND 或 OR 运算符将 LIKE 运算符与多个字符串模式一起用于选择行。
Syntax
以下是使用 LIKE 运算符和 OR 运算符的基本语法 −
SELECT column1, column2, ...
FROM table_name
WHERE column1 LIKE pattern1 OR column2 LIKE pattern2 OR ...;
NOT operator with the LIKE condition
我们将 NOT 运算符与 LIKE 一起使用,以提取不包含搜索模式中提供的特定字符串的行。
Escape characters with LIKE operator
SQL 中的转义字符用于从 LIKE 运算符的表达式中排除某些通配符。通过这样做,我们可以在其常规意义上使用这些字符。
使用转义字符,我们还可以避免使用 SQL 语法中保留的、表示特定命令的字符,例如单引号 ' 、 % 和 _ 。
例如,如果你需要在 LIKE 条件中将 % 搜索为常量,那么可以使用转义字符来实现。
Syntax
将 LIKE 运算符与转义字符一起使用的语法如下 −
SELECT column1, column2, ...
FROM table_name
WHERE column1 LIKE 'pattern ESCAPE escape_character';
其中,
-
pattern 是你想要匹配的模式。
-
ESCAPE 是指示转义字符的关键字
-
escape_character 是你想用作转义字符的字符。
Example
让我们使用下面的查询创建一个新表 EMPLOYEE −
CREATE TABLE EMPLOYEE (
SALARY DECIMAL (18,2) NOT NULL,
BONUS_PERCENT VARCHAR (20)
);
现在,我们可以使用 INSERT 语句将值插入到此空表中,如下所示:
INSERT INTO EMPLOYEE VALUES
(67000.00, '45.00'),
(54000.00, '20.34%'),
(75000.00, '51.00'),
(84000.00, '56.82%');
Employee 表由組織中員工的薪資和薪資中獎金百分比組成,如下所示 −
SALARY |
BONUS_PERCENT |
67000.00 |
45.00 |
54000.00 |
20.34% |
75000.00 |
51.00 |
84000.00 |
56.82% |
现在,我们正在显示 EMPLOYEE 表中的所有记录,其中 BONUS_PERCENT 包含 % 常量 −
SELECT * FROM EMPLOYEE
WHERE BONUS_PERCENT LIKE'%!%%' ESCAPE '!';