SQL Like运算符

SQL Like运算符

LIKE 是结构化查询语言中的逻辑运算符。这个SQL运算符在WHERE子句中与以下三个语句一起使用:

  1. SELECT语句
  2. UPDATE语句
  3. DELETE语句

它根据SQL查询中指定的模式过滤列中的记录。

以下是与SQL LIKE运算符一起使用的两个通配符字符:

  1. % (百分号): 这个通配符字符匹配零个、一个或多个字符。
  2. _ (下划线): 这个通配符字符只匹配一个字符。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程