SQL 模式匹配

SQL 模式匹配

  • LIKE子句用于在SQL中执行模式匹配任务。
  • 在SQL查询中,WHERE子句通常在LIKE子句之前。
  • LIKE子句会在查询中的模式与SQL表中的值的模式之间进行匹配。如果匹配成功,则会从SQL表中检索到该特定值。
  • LIKE子句可以处理字符串和数字。

LIKE子句在SQL中使用以下符号(被称为通配符操作符)执行模式匹配任务。

  1. 要表示零个、一个或多个字符,使用%(百分号)。
  2. 要表示单个字符,使用_(下划线)。

让我们从LIKE子句的语法开始:

SELECT ColumnName1, ColumnName2 FROM TableName WHERE ColumnName LIKE [Expression];

在这里,表达式是指我们想要在表的值中搜索的模式。该表达式将包括通配符运算符,例如“%”和“_”。

为了更好地理解这个概念,让我们看一些例子。

假设我们在数据库中创建了一个名为employee_details的表,并且具有以下数据:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
2 Riya Sharma Mumbai 72000 28
3 Neha Verma Varanasi 37000 19
4 Neeta Desai Nasik 39500 21
5 Priya Wagh Udaipur 60000 32

我们在所有的示例中都会使用相同的表。在下面的示例中,我们将使用MySQL数据库及其语法来编写查询。

1. 使用LIKE子句和%(百分号)

示例1: 编写一个查询来显示名字以’Pr’开头的员工详情。

查询:

mysql> SELECT * FROM employee_details WHERE Name LIKE 'Pr%';

我们使用了带有WHERE子句应用于Name列的SELECT查询,后面紧跟着LIKE子句。我们在LIKE子句中指定表达式值为“Pr”,后面紧跟着通配符百分号(%)。因此,根据查询,所有以字符串“Pr”开头,后面跟任意字符的记录将被视为输出的一部分。

您将获得以下表作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
5 Priya Wagh Udaipur 60000 32

在employee_details中有两个记录,这些记录的名称以字符串“Pr”开头。

示例2: 编写一个查询,显示名称中包含子字符串“ya”的员工详细信息。

查询:

mysql> SELECT * FROM employee_details WHERE Name LIKE '%ya%';

我们使用了带有WHERE子句应用于Name列的SELECT查询,然后是LIKE子句。 在LIKE子句中,我们将表达式值指定为“ya”,前后跟通配符百分号(%)。 因此,根据查询,所有包含“ya”作为子字符串的名称,前后跟任何其他字符的记录将被视为输出的一部分。

你将得到以下表格作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
2 Riya Sharma Mumbai 72000 28
5 Priya Wagh Udaipur 60000 32

在employee_details中有三条记录,其中名称包含 ‘ya’ 作为子字符串。

示例3: 编写一个查询来显示城市名称以 ‘i’ 结尾的员工详细信息。

查询:

mysql> SELECT * FROM employee_details WHERE City LIKE '%i';

我们在City列上应用了带有WHERE子句的SELECT查询,紧接着是LIKE子句。在LIKE子句中,我们将表达式值指定为以通配符操作符百分号(%)前导的’i’。因此根据查询,所有以任何其他字符前导并以’i’结尾的城市名称记录将被视为输出的一部分。

您将获得以下表格作为输出:

ID Name City Salary Age
2 Riya Sharma Mumbai 72000 28
3 Neha Verma Varanasi 37000 19

在employee_details表中有两条记录,其中城市名称以’i’结尾。

示例4: 编写一个查询来显示年龄以2开头的员工详细信息。

查询语句:

mysql> SELECT * FROM employee_details WHERE Age LIKE '2%';

我们使用SELECT查询,应用于年龄列的WHERE子句,后跟LIKE子句。我们在LIKE子句中指定表达式值为’2’,前面加上通配符百分号(%)。因此,根据查询,所有以’2’开头,后面跟着任意其他数字的记录都将作为输出的一部分。

您将得到以下表格作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
2 Riya Sharma Mumbai 72000 28
4 Neeta Desai Nasik 39500 21

在employee_details表中有三条记录,其中的年龄以数字’2’开头。

示例 5:

编写一个查询来显示薪水包含数字50的员工详细信息。

查询:

mysql> SELECT * FROM employee_details WHERE Salary LIKE '%50%';

我们使用了带有WHERE子句应用在salary列上的SELECT查询,紧接着是LIKE子句。在LIKE子句中,我们指定了表达式值为’50’,前面和后面都有通配符百分号(%)。所以,根据查询,所有在任意数字前后都有50的工资的记录将被作为输出的一部分。

你将得到以下表格作为输出:

ID Name City Salary Age
4 Neeta Desai Nasik 39500 21

在employee_details中只有一条记录,其中薪水号’50’在中间。

2. 使用LIKE子句与 _(下划线)

示例1:

编写查询以显示城市名称以’Na’开头,以’ik’结尾,并在’Na’和’ik’之间包含任何一个字符的员工详细信息。

查询:

mysql> SELECT * FROM employee_details WHERE City LIKE 'Na_ik';

我们使用了SELECT查询,并在City列上应用了WHERE子句,接着使用了LIKE子句。在LIKE子句中,我们将表达式值指定为’Na’,然后使用通配符下划线(_)加上字符串’ik’。因此,根据查询的结果,所有具有以’Na’开头,接着是任意一个字符,并以’ik’结尾的城市名称的记录都将被视为输出的一部分。

你将得到以下表格作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
4 Neeta Desai Nasik 39500 21

在employee_details表中有两条记录,其城市名称以‘Na’开头并以‘ik’结尾。

示例2:

编写一个查询来显示员工详细信息,其中薪资包含以‘3’开头的两位数字,并最后以‘00’结尾的数字。

查询:

mysql> SELECT * FROM employee_details WHERE Salary LIKE '3__00';

我们使用了SELECT查询,WHERE子句应用在Salary列上,接着使用了LIKE子句。在LIKE子句中,我们将表达式值指定为’3’,然后使用通配符下划线 (_) 两次表示数字’00’。因此,根据查询,所有工资以3开头、后面跟任意数字并以’00’结尾的记录将被视为输出的一部分。

输出将如下表所示:

ID Name City Salary Age
3 Neha Verma Varanasi 37000 19
4 Neeta Desai Nasik 39500 21

在employee_details表中有两条记录,其中薪水以数字3开头并以双零(00)结尾。

3. 使用LIKE子句和%和_操作符在单个查询中

示例1: 编写一个查询显示员工详细信息,其中员工姓名在第五个位置包含’a’。

查询:

mysql> SELECT * FROM employee_details WHERE Name LIKE '____a%';

我们已经使用了带有WHERE子句的SELECT查询,应用于Name列,后面跟着LIKE子句。在LIKE子句中,我们指定了表达式值为通配符运算符下划线 (_) 出现五次,后面加上’a’再加上另一个通配符运算符百分号 (%)。所以根据查询,所有名称以任意五个字母开头,后面跟着一个字母’a’并以任意其他字母结尾的记录都将被视为输出的一部分。

你将得到以下表作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
4 Neeta Desai Nasik 39500 21
5 Priya Wagh Udaipur 60000 32

在employee_details表中有三条记录,这些记录的名称以任意五个字母开头,后跟字母’a’,并以任意字母结尾。

例 2:

编写一个查询显示包含以第五个字符开始的子字符串“00”的雇员详细信息。

查询:

mysql> SELECT * FROM employee_details WHERE Salary LIKE '__00%';

我们使用了带有WHERE子句的SELECT查询,并在Salary列上应用了LIKE子句。在LIKE子句中,我们将表达式值指定为通配符下划线(_)出现两次,后跟以另一个通配符百分号(%)结尾的两个零。因此,根据查询,所有工资以任意两个数字开头,后跟两个零并以任意数字结尾的记录都将作为输出的一部分。

您将获得以下表格作为输出:

ID Name City Salary Age
1 Priyanka Bagul Nasik 26000 20
2 Riya Sharma Mumbai 72000 28
3 Neha Verma Varanasi 37000 19
5 Priya Wagh Udaipur 60000 32

员工详情中有四条记录,其中薪水以任意两个数字开头,后跟两个零,以任意数字结尾。

4. 使用带有NOT运算符的LIKE子句

示例1:

编写查询以显示员工详细信息,其中员工姓名不像’ Priya ‘。

查询:

mysql> SELECT * FROM employee_details WHERE Name NOT LIKE 'Priya%';

我们在Name列上使用了具有WHERE子句的SELECT查询,接着是前置的LIKE子句。在LIKE子句中,我们将表达式值指定为’Priya’,后跟通配符百分号(%)。根据查询,所有名称不以’Priya’开头的记录,后跟任何字母,都将被视为输出的一部分。

输出将是以下表格:

ID Name City Salary Age
2 Riya Sharma Mumbai 72000 28
3 Neha Verma Varanasi 37000 19
4 Neeta Desai Nasik 39500 21

在employee_details中有三条记录,这些记录的姓名不以’Priya’开头,后面跟着任何字母。

示例2:

编写一个查询,显示员工详情,其中员工姓名不像任何单个字符后跟’Na’并以’ik’结尾。

查询:

mysql> SELECT * FROM employee_details WHERE City NOT LIKE 'Na_ik';

我们已经使用了带有应用于City列的WHERE子句的SELECT查询,然后是以NOT为前缀的LIKE子句。在LIKE子句中,我们指定了表达式值为’Na’,后跟通配符操作符下划线(_)和’ik’。所以,根据查询,所有名称不以’Priya’开头的记录,后跟任何字母都将被视为输出的一部分。

您将获得以下表格作为输出:

ID Name City Salary Age
2 Riya Sharma Mumbai 72000 28
3 Neha Verma Varanasi 37000 19
5 Priya Wagh Udaipur 60000 32

在employee_details表中有三条记录,这些记录的员工姓名不以“Na”开头,后面跟着任意一个字母,并以“ik”结尾。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程