sql not like 多条件
1. 引言
在SQL中,我们经常需要使用LIKE
操作符来进行模糊匹配,以进行条件筛选。然而,有时候我们需要匹配的条件并不是单一的,而是需要满足多个条件的组合。本文将重点介绍如何在SQL中使用LIKE
和NOT LIKE
操作符进行多条件匹配。
2. LIKE操作符
在介绍多条件匹配之前,我们先回顾下SQL中的LIKE
操作符。LIKE
操作符用于在WHERE
子句中匹配字段的模式。它通常与通配符一起使用,常见的通配符有%
和_
。
%
用于匹配零个或多个字符_
用于匹配任意单个字符
以下是一些示例:
LIKE 'abc%'
可以匹配以”abc”开头的字符串,例如”abc123″LIKE '%abc%'
可以匹配包含”abc”的任意位置的字符串,例如”123abc456″LIKE 'abc_'
可以匹配以”abc”开头,后面跟着一个字符的字符串,例如”abc1″,但不匹配”abc12″
现在,我们假设有一个名为employees
的表,其中包含有关员工的信息,我们将使用该表来详细解释多条件的匹配。
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT,
department VARCHAR(100)
);
INSERT INTO employees (id, name, age, department) VALUES
(1, 'John Smith', 30, 'Sales'),
(2, 'Jane Doe', 25, 'Marketing'),
(3, 'Michael Johnson', 35, 'Sales'),
(4, 'Emily Davis', 28, 'Finance'),
(5, 'David Jones', 32, 'Sales');
下面,让我们通过一些示例来演示如何在SQL中使用LIKE
和NOT LIKE
进行多条件匹配。
3. 多条件匹配
3.1 使用AND操作符
我们可以使用AND
操作符来将多个条件组合在一起。当我们想要匹配满足多个条件的记录时,可以使用多个LIKE
子句,并使用AND
将它们连接起来。
假设我们希望找出department
为”Sales”并且name
以字母”D”开头的员工,我们可以使用以下查询:
SELECT * FROM employees
WHERE department = 'Sales'
AND name LIKE 'D%';
运行结果:
id | name | age | department |
---|---|---|---|
2 | Jane Doe | 25 | Marketing |
5 | David Jones | 32 | Sales |
以上查询将返回department
为”Sales”并且name
以字母”D”开头的员工的信息。
3.2 使用OR操作符
除了使用AND
操作符,我们还可以使用OR
操作符来匹配满足多个条件中的任意一个条件的记录。
假设我们现在想要查找department
为”Sales”或department
为”Finance”的员工,我们可以使用以下查询:
SELECT * FROM employees
WHERE department = 'Sales'
OR department = 'Finance';
运行结果:
id | name | age | department |
---|---|---|---|
1 | John Smith | 30 | Sales |
3 | Michael Johnson | 35 | Sales |
4 | Emily Davis | 28 | Finance |
5 | David Jones | 32 | Sales |
以上查询将返回department
为”Sales”或department
为”Finance”的员工的信息。
3.3 多条件组合筛选
我们还可以将多个条件通过不同的操作符进行组合来进行更复杂的筛选。以下是一些示例:
- 查找
name
以”M”或”D”开头的员工,并且department
为”Sales”或”Marketing”:
SELECT * FROM employees
WHERE (name LIKE 'M%' OR name LIKE 'D%')
AND (department = 'Sales' OR department = 'Marketing');
结果为空集,因为我们的数据中没有符合这个条件的员工记录。
- 查找
name
不以”J”开头的员工,并且age
大于等于30岁:
SELECT * FROM employees
WHERE name NOT LIKE 'J%'
AND age >= 30;
运行结果:
id | name | age | department |
---|---|---|---|
3 | Michael Johnson | 35 | Sales |
5 | David Jones | 32 | Sales |
以上查询将返回name
不以”J”开头,并且age
大于等于30岁的员工的信息。
4. NOT LIKE操作符
在以上示例中,我们主要使用了LIKE
操作符。然而,有时候我们可能需要排除某些条件。
我们可以使用NOT LIKE
操作符来排除某些模式。
假设我们希望查找name
不包含”Smith”的员工,我们可以使用以下查询:
SELECT * FROM employees
WHERE name NOT LIKE '%Smith%';
运行结果:
id | name | age | department |
---|---|---|---|
2 | Jane Doe | 25 | Marketing |
4 | Emily Davis | 28 | Finance |
5 | David Jones | 32 | Sales |
以上查询将返回name
不包含”Smith”的员工的信息。
5. 总结
在SQL中,我们可以使用LIKE
和NOT LIKE
操作符进行模糊条件匹配。通过使用AND
和OR
操作符,我们可以将多个条件进行组合,从而实现多条件的筛选。同时,我们还可以使用NOT LIKE
操作符来排除某些条件。在实际应用中,我们可以根据需要灵活运用这些操作符,以实现所需的查询结果。