SQL Like 多个值

在SQL查询中,LIKE是一个用于在WHERE子句中搜索指定模式的模式匹配操作符。常用于根据模式匹配从数据库表中检索数据。
通常情况下,我们可以使用LIKE操作符来检索包含特定字符或字符串的数据。但是有时候我们需要查询满足多个值的情况,这时候我们可以使用一些技巧来实现。本文将详细介绍在SQL中如何使用LIKE操作符来匹配多个值的情况。
单值匹配
首先,让我们回顾一下如何使用LIKE操作符来匹配单个值的情况。假设我们有一个名为users的表,其中包含了用户的数据,我们想要查询姓氏为Smith的用户信息,可以使用如下SQL语句:
SELECT * FROM users WHERE last_name LIKE 'Smith';
上面的SQL语句会返回所有姓氏为Smith的用户信息。
多个值匹配
接下来我们来讨论如何使用LIKE操作符来匹配多个值的情况。一种常见的方式是使用OR关键字连接多个LIKE条件,例如:
SELECT * FROM users
WHERE last_name LIKE 'Smith'
OR last_name LIKE 'Johnson'
OR last_name LIKE 'Williams';
上面的SQL语句会返回姓氏为Smith、Johnson或Williams的用户信息。
另外一种方式是使用IN关键字结合LIKE操作符,例如:
SELECT * FROM users
WHERE last_name IN ('Smith', 'Johnson', 'Williams');
上面的SQL语句和上一个示例的效果是一样的,都会返回姓氏为Smith、Johnson或Williams的用户信息。
通配符匹配
在使用LIKE操作符时,我们还可以结合通配符来实现更灵活的匹配。常用的通配符有%和_。
%:匹配任意长度的任意字符,包括0个字符。_:匹配单个任意字符。
下面是一些示例:
-- 匹配以"J"开头的姓氏
SELECT * FROM users
WHERE last_name LIKE 'J%';
-- 匹配第二个字母为"o"的姓氏
SELECT * FROM users
WHERE last_name LIKE '_o%';
-- 匹配包含"ll"的姓氏
SELECT * FROM users
WHERE last_name LIKE '%ll%';
结果展示
假设我们有如下的users表:
| id | first_name | last_name |
|---|---|---|
| 1 | John | Smith |
| 2 | Alice | Johnson |
| 3 | Bob | Williams |
| 4 | Charlie | Brown |
| 5 | David | Miller |
查询姓氏为Smith或Johnson的用户信息
SELECT * FROM users
WHERE last_name LIKE 'Smith'
OR last_name LIKE 'Johnson';
结果如下:
| id | first_name | last_name |
|---|---|---|
| 1 | John | Smith |
| 2 | Alice | Johnson |
查询姓氏以”M”开头的用户信息
SELECT * FROM users
WHERE last_name LIKE 'M%';
结果如下:
| id | first_name | last_name |
|---|---|---|
| 5 | David | Miller |
总结
通过本文的介绍,我们学习了如何在SQL中使用LIKE操作符来匹配多个值的情况。我们可以使用OR关键字或IN关键字结合通配符来实现灵活的匹配需求。
极客教程