SQL Like运算符
LIKE 是结构化查询语言中的逻辑运算符。这个SQL运算符在WHERE子句中与以下三个语句一起使用:
- SELECT语句
- UPDATE语句
- DELETE语句
它根据SQL查询中指定的模式过滤列中的记录。
以下是与SQL LIKE运算符一起使用的两个通配符字符:
- % (百分号): 这个通配符字符匹配零个、一个或多个字符。
- _ (下划线): 这个通配符字符只匹配一个字符。
SQL中LIKE运算符的语法
SELECT column_Name1, column_Name2 ...., column_NameN FROM table_Name WHERE column_name LIKE pattern;
在这个语法中,模式是一系列字符,必须在WHERE子句之后指定的列中进行搜索。
SQL中LIKE运算符的示例
在本文中,我们提供了以下不同的SQL示例,帮助您了解如何使用LIKE运算符:
示例1: 让我们以以下 员工 表为例,帮助您分析带有%符号的LIKE运算符:
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1001 | Vivek | 9000 | Finance |
1002 | Saket | 4000 | HR |
1003 | Raman | 3000 | Coding |
1004 | Suraj | 6000 | Coding |
1005 | Seenu | 5000 | HR |
1006 | Shubham | 10000 | Marketing |
1007 | Anaya | 4000 | Coding |
1008 | Parul | 8000 | Finance |
i)假设你想筛选以”S”开头的员工姓名记录。为了执行这个操作,你需要输入以下查询语句:
SELECT * FROM Employee WHERE Name LIKE 'S%' ;
此查询在输出中显示以下表格:
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1002 | Saket | 4000 | HR |
1004 | Suraj | 6000 | Coding |
1005 | Seenu | 5000 | HR |
1006 | Shubham | 10000 | Marketing |
ii)假设,您想要过滤掉部门名称以“g”结尾的员工记录。为了执行此操作,您需要键入以下查询语句:
SELECT * FROM Employee WHERE Emp_Dept LIKE '%g' ;
此查询将在输出中显示以下表格:
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1003 | Raman | 3000 | Coding |
1004 | Suraj | 6000 | Coding |
1006 | Shubham | 10000 | Marketing |
1007 | Anaya | 4000 | Coding |
iii)假设您想要显示部门名称以“C”开头并以“g”结尾的员工的姓名和薪水。为了进行此操作,您需要输入以下查询:
SELECT Name, Emp_Salary FROM Employee WHERE Emp_Dept LIKE 'C%g' ;
此查询在输出中显示以下表格:
Name | Emp_Salary |
---|---|
Raman | 3000 |
Suraj | 6000 |
Anaya | 4000 |
iv)假设您想显示上述员工表中名字中包含字母”a”的所有记录。为此操作,您需要键入以下查询:
SELECT * FROM Employee WHERE Emp_Dept LIKE '%a%' ;
此查询在输出中显示以下表:
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1002 | Saket | 4000 | HR |
1003 | Raman | 3000 | Coding |
1004 | Suraj | 6000 | Coding |
1006 | Shubham | 10000 | Marketing |
1007 | Anaya | 4000 | Coding |
1008 | Parul | 8000 | Finance |
示例2: 让我们来看一个以下的 学生 表格,它可以帮助你分析使用 _ (下划线) 符号的LIKE操作符:
Roll_No | Name | Marks | Age |
---|---|---|---|
1 | Raman | 95 | 20 |
2 | Kapil | 60 | 19 |
3 | Arun | 85 | 17 |
4 | Ram | 92 | 18 |
5 | Suman | 55 | 20 |
6 | Sanjay | 88 | 18 |
7 | Sheetal | 65 | 19 |
8 | Rakesh | 64 | 20 |
i) 假设你想显示那些姓名中第二位包含字母”a”的学生的所有记录。对于这个操作,你需要键入以下带有下划线符号的查询:
SELECT * FROM Student WHERE Name LIKE '_a%' ;
这个查询在输出中显示以下表格:
Roll_No | Name | Marks | Age |
---|---|---|---|
1 | Raman | 95 | 20 |
2 | Kapil | 60 | 19 |
4 | Ram | 92 | 18 |
6 | Sanjay | 88 | 18 |
8 | Rakesh | 64 | 20 |
ii)假设您想要访问那些名字至少包含3个字符且以字母”S”开头的学生的记录。对于这个操作,您需要键入以下查询:
SELECT * FROM Student WHERE Name LIKE 'S___%' ;
在此查询中,您必须在 S 字符后面使用下划线符号三次。上面的查询在输出中显示以下表格:
Roll_No | Name | Marks | Age |
---|---|---|---|
5 | Suman | 55 | 20 |
6 | Sanjay | 88 | 18 |
7 | Sheetal | 65 | 19 |
iii) 假设您想访问那些成绩为2位数且以“5”结尾的学生的Roll_No,Name和Marks:
SELECT * FROM Student WHERE Name LIKE '_5' ;
上述查询在输出中显示如下表格:
Roll_No | Name | Marks | Age |
---|---|---|---|
1 | Raman | 95 | 20 |
3 | Arun | 85 | 17 |
5 | Suman | 55 | 20 |
7 | Sheetal | 65 | 19 |
像使用UPDATE语句一样
在SQL中,我们也可以在UPDATE语句的WHERE子句中使用LIKE运算符。LIKE运算符更新满足查询中指定模式的表中的记录。
LIKE与UPDATE语句的语法
UPDATE table_name SET column_Name1 = value1, column_Name2 = value2, ...., column_NameN = valueN WHERE ColumnName LIKE Pattern;
使用UPDATE语句的LIKE示例
在这里,我们提供了以下两个不同的SQL示例,演示了如何使用LIKE运算符结合UPDATE语句来更新表中的现有记录:
示例1: 我们以以下的 Student 表为例,演示如何在UPDATE语句中使用LIKE运算符和 %(百分号) 符号来更新记录:
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 95 | Delhi |
2 | Kapil | 60 | Gurugram |
3 | Arun | 85 | Ghaziabad |
4 | Ram | 92 | Delhi |
5 | Suman | 55 | Ghaziabad |
6 | Sanjay | 88 | Gurugram |
7 | Sheetal | 65 | Gurugram |
8 | Rakesh | 64 | Delhi |
i)假设要更新名字以”S”开头的学生的城市。为了进行此操作,您必须键入以下带有下划线符号的查询:
UPDATE Student SET City = 'Jaipur' WHERE Name LIKE 'S%';
以上查询将城市设置为 Jaipur ,这些学生的姓名以字母’S’开头,如果您想看到表中的更改,则必须键入以下查询:
Select * From Student Where Name LIKE 'S%' ;
Roll_No | Name | Marks | City |
---|---|---|---|
5 | Suman | 55 | Jaipur |
6 | Sanjay | 88 | Jaipur |
7 | Sheetal | 65 | Jaipur |
ii)假设您想更新城市名以“i”结尾的学生的分数。为此操作,您需要键入以下带下划线符号的查询:
UPDATE Student SET Marks = 70 WHERE City LIKE '%i';
上述查询将城市名称以字母’i’结尾的学生的分数设为70,如果要查看表中的更改,则必须键入以下查询:
Select * From Student Where City LIKE '%i';
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 70 | Delhi |
4 | Ram | 70 | Delhi |
8 | Rakesh | 70 | Delhi |
iii) 假设你想更新那些城市名以”G”开头并以”d”结尾的学生的成绩。对于这个操作,您需要输入以下查询加下划线符号:
UPDATE Student SET Marks = 90 WHERE City LIKE 'G%d' ;
以上查询将分数设置为90,对于那些城市名称以字母’G’开头并以字母’d’结尾的学生,如果您想在表中看到更改,则需要键入以下查询:
Select Roll_No, Marks, City From Student Where City LIKE 'G%d' ;
Roll_No | Marks | City |
---|---|---|
3 | 90 | Ghaziabad |
5 | 90 | Ghaziabad |
iv)假设您想要更新上述学生表中姓名中任意位置包含字母”a”的学生的城市。为此操作,您需要键入以下查询:
UPDATE Student SET City = 'Goa' WHERE Name LIKE '%a%' ;
以上查询将城市设置为Goa,针对那些姓名中包含字母”a”的学生,并且如果你想要在表格中看到这些变化,你需要输入以下查询:
Select * From Student Where Name LIKE '%a%' ;
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 95 | Goa |
2 | Kapil | 60 | Goa |
4 | Ram | 92 | Goa |
5 | Suman | 55 | Goa |
6 | Sanjay | 88 | Goa |
7 | Sheetal | 65 | Goa |
8 | Rakesh | 64 | Goa |
示例 2: 让我们来看以下 员工 表格,它展示了如何使用LIKE运算符和_ (下划线) 符号在UPDATE语句中更新记录:
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1001 | Vivek | 9000 | Finance |
1002 | Saket | 4000 | HR |
1003 | Raman | 3000 | Coding |
1004 | Suraj | 6000 | Coding |
1005 | Seenu | 5000 | HR |
1006 | Shubham | 10000 | Marketing |
1007 | Anaya | 4000 | Coding |
1008 | Parul | 8000 | Finance |
表: 员工
i) 假设,您希望更新那些名字中第二个位置包含”a”的员工的薪水。为此操作,您需要输入以下带有下划线符号的查询:
UPDATE Employee SET Salary = 9000 WHERE Name LIKE '_a%' ;
上述查询将表中名字第二个位置包含字母”a”的员工的薪资设为9000,如果你想在表中看到这些变化,你需要输入以下查询:
Select * From Employee WHERE Name LIKE '_a%' ;
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1002 | Saket | 9000 | HR |
1003 | Raman | 9000 | Coding |
1008 | Parul | 9000 | Finance |
二)假设你想要更新那些名字包含至少3个字符且以字母”S”开头的员工的部门。为了进行此操作,你需要键入以下查询语句:
UPDATE Employee SET Emp_Dept = 'Coding' WHERE Name LIKE 'S___%' ;
在这个查询中,您必须在S字符后使用下划线符号三次。
上述查询将表中名字至少包含3个字符且以字母”S”开头的员工的Emp_Dept设置为Coding,如果您想在表中看到更改,那么您必须输入以下查询:
SELECT * FROM Employee WHERE Name LIKE 'S___%' ;
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1002 | Saket | 4000 | Coding |
1004 | Suraj | 6000 | Coding |
1005 | Seenu | 5000 | Coding |
1006 | Shubham | 10000 | Coding |
iii)假设您想要更新Emp_Dept长度为2并以字符’R’结尾的员工的薪水。 为了进行此操作,您需要键入以下查询:
>UPDATE Employee SET Salary = 20000 WHERE Emp_Dept LIKE '_R' ;
上述查询将工资设置为20000,条件是在表格中,Emp_Dept字段长度为2且以字符’R’结尾的员工。如果您想查看表格中的变化,需要输入以下查询:
SELECT * FROM Employee WHERE Name LIKE '_R' ;
Emp_ID | Name | Emp_Salary | Emp_Dept |
---|---|---|---|
1002 | Saket | 20000 | HR |
1005 | Seenu | 20000 | HR |
类似于DELETE语句
在SQL中,我们也可以在DELETE语句的WHERE子句中使用LIKE运算符。LIKE运算符根据SQL查询中指定的模式删除或移除表中匹配的记录。
LIKE与DELETE语句的语法
DELETE FROM table_name WHERE ColumnName LIKE Pattern ;
删除语句中LIKE的示例
这里,我们拿到了以下示例,帮助您了解如何在删除数据库表中的现有记录时使用LIKE运算符:
我们来看一下下面的 学生 表,它展示了如何使用LIKE运算符和 %(百分号) 以及 _(下划线) 符号来删除记录:
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 95 | Delhi |
2 | Kapil | 60 | Gurugram |
3 | Arun | 85 | Ghaziabad |
4 | Ram | 92 | Delhi |
5 | Suman | 55 | Ghaziabad |
6 | Sanjay | 88 | Gurugram |
7 | Sheetal | 65 | Gurugram |
8 | Rakesh | 64 | Delhi |
i) 假设您想要删除姓名以”S”开头的学生的记录。为了进行此操作,您需要键入以下具有下划线符号的查询:
DELETE FROM Student WHERE Name LIKE 'S%';
这个查询从上面的学生表中移除了那些名字以S开头的学生记录:
SELECT * FROM Student;
Roll_No | Name | Marks | City |
---|---|---|---|
5 | Suman | 55 | Ghaziabad |
6 | Sanjay | 88 | Gurugram |
7 | Sheetal | 65 | Gurugram |
ii)假设您想要删除城市名以“i”结尾的学生记录。 对于此操作,您必须键入以下查询,并在其后加下划线符号:
DELETE FROM Student WHERE City LIKE '%i';
这个查询从上面的学生表中删除那些城市名以i结尾的学生记录:
SELECT * FROM Student;
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 95 | Delhi |
4 | Ram | 92 | Delhi |
8 | Rakesh | 64 | Delhi |
iii)假设您想要删除城市名以“G”开头且以“d”结尾的学生的记录。为了进行此操作,您需要键入以下带有下划线符号的查询:
DELETE FROM Student WHERE City LIKE 'G%d';
这个查询从上面的学生表中删除那些城市名以”G”开头并以”d”结尾的学生记录。
SELECT * FROM Student;
Roll_No | Name | Marks | City |
---|---|---|---|
1 | Raman | 95 | Delhi |
2 | Kapil | 60 | Gurugram |
4 | Ram | 92 | Delhi |
6 | Sanjay | 88 | Gurugram |
7 | Sheetal | 65 | Gurugram |
8 | Rakesh | 64 | Delhi |
iv) 假设您想要删除学生表中姓名包含字母”a”的记录。对于此操作,您需要键入以下查询:
DELETE FROM Student WHERE City LIKE 'G%d';
此查询从上述学生表中删除那些姓名任意位置包含字母”a”的学生记录。
SELECT * FROM Student;
这个查询的结果中没有显示任何表,因为表中的所有行都被删除了。
v)假设您想从学生表中删除那些名字在第二个位置包含字母”a”的记录。为了执行此操作,您需要输入以下带有下划线符号的查询语句:
DELETE FROM Student WHERE Name LIKE '_a%';
该查询从上述学生表中删除名字中第二个位置包含字母”a”的学生记录。
SELECT * FROM Student;
上述查询在输出中显示以下表格:
Roll_No | Name | Marks | City |
---|---|---|---|
3 | Arun | 85 | Ghaziabad |
5 | Suman | 55 | Ghaziabad |
7 | Sheetal | 65 | Gurugram |
六) 假设您想从学生表中删除那些名字至少包含3个字符且以字母”S”开头的记录。为了执行此操作,您需要输入以下查询:
DELETE FROM Student WHERE Name LIKE 'S___%';
这个查询删除了上述学生表中姓名包含至少3个字符且以字母”S”开头的学生记录。
SELECT * FROM Student;
以上查询结果在输出中显示如下表格:
Roll_No | Name | Marks | City |
---|---|---|---|
5 | Suman | 55 | Ghaziabad |
6 | Sanjay | 88 | Gurugram |
7 | Sheetal | 65 | Gurugram |
七)假设您想从学生表中删除那些成绩为两位数并以’5’结尾的记录:
DELETE FROM Student WHERE Marks LIKE '_5' ;
此查询将从上述学生表中删除’Marks’为2位数且以’5’结尾的记录。
SELECT * FROM Student;
上述查询在输出中显示了以下表格:
Roll_No | Name | Marks | City |
---|---|---|---|
2 | Kapil | 60 | Gurugram |
4 | Ram | 92 | Delhi |
6 | Sanjay | 88 | Gurugram |
8 | Rakesh | 64 | Delhi |