SQL 中的模式匹配2024年8月29日 | 阅读 8 分钟
LIKE 子句使用以下符号,称为 SQL 中的通配符运算符,来执行此模式匹配任务。
让我们从 LIKE 子句的语法开始。 此处,Expression 指的是我们要在表的值中搜索的模式。此表达式将包含 '%' 和 '_' 等通配符运算符。 为了实际理解这个概念,让我们看一些例子。 假设我们在数据库中创建了一个名为 employee_details 的表,其中包含以下数据:
在以下示例中,我们将使用同一个表。在编写以下示例中的查询时,使用的是 MySQL 数据库及其语法。 (A)将 LIKE 子句与 %(百分号)一起使用示例 1:编写一个查询以显示姓名以“Pr”开头的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Name 列,后跟 LIKE 子句。我们在 LIKE 子句中指定了表达式值“Pr”,后跟通配符运算符百分号 (%)。因此,根据查询,所有名称以字符串“Pr”开头,后跟任何其他字符的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有两条记录,其名称以字符串“Pr”开头。 示例 2:编写一个查询以显示姓名中包含子字符串“ya”的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Name 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“ya”,前面和后面都带有通配符运算符百分号 (%)。因此,根据查询,所有名称中包含“ya”作为子字符串,前面和后面带有任何其他字符的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有三条记录,其名称包含“ya”作为子字符串。 示例 3:编写一个查询以显示城市名称以“i”结尾的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 City 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“i”,前面带有通配符运算符百分号 (%)。因此,根据查询,所有城市名称以“i”结尾,前面带有任何其他字符的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有两条记录,其城市名称以“i”结尾。 示例 4:编写一个查询以显示年龄数字以 2 开头的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Age 列,后跟 LIKE 子句。我们在 LIKE 子句中指定了表达式值“2”,前面带有通配符运算符百分号 (%)。因此,根据查询,所有年龄数字以“2”开头,后跟任何其他数字的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有三条记录,其年龄数字以数字“2”开头。 示例 5 编写一个查询以显示中间包含数字 50 的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 salary 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“50”,前面和后面都带有通配符运算符百分号 (%)。因此,根据查询,所有薪资数字中间包含 50,前面和后面带有任何其他数字的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中只有一条记录,其薪资数字中间包含“50”。 (B)将 LIKE 子句与 _(下划线)一起使用示例 1 编写一个查询以显示城市名称以“Na”开头,以“ik”结尾,并且在“Na”和“ik”之间包含任何单个字符的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 City 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“Na”,后跟通配符运算符下划线 (_),然后是字符串“ik”。因此,根据查询,所有城市名称以“Na”开头,后跟任何单个字符,并以“ik”结尾的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有两条记录,其城市名称以“Na”开头并以“ik”结尾。 示例 2 编写一个查询以显示薪资以数字“3”开头,后面跟着任意两个数字,最后以“00”结尾的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Salary 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“3”,后跟两次通配符运算符下划线 (_),然后是数字“00”。因此,根据查询,所有薪资以 3 开头,后跟任何数字,并以“00”结尾的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有两条记录,其薪资以数字 3 开头并以双零 (00) 结尾。 (C)在单个查询中使用 LIKE 子句同时使用 % 和 _ 运算符示例 1:编写一个查询以显示员工姓名在第五个位置包含“a”的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Name 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值,即五个下划线 (_) 通配符运算符,后跟“a”,再后跟另一个通配符运算符百分号 (%)。因此,根据查询,所有名称以任何五个字母开头,后跟字母“a”,并以任何其他字母结尾的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有三条记录,其姓名以任何五个字母开头,后跟“a”,并以任何字母结尾。 示例 2 编写一个查询以显示薪资从第五个位置开始包含子字符串“00”的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Salary 列,后跟 LIKE 子句。在 LIKE 子句中,我们指定了表达式值,即两个下划线 (_) 通配符运算符,后跟双零,最后是另一个通配符运算符百分号 (%)。因此,根据查询,所有薪资以任何两个数字开头,后跟双零,并以任何数字结尾的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有四条记录,其薪资以任何两个数字开头,后跟双零,并以任何数字结尾。 (D)将 LIKE 子句与 NOT 运算符一起使用示例 1 编写一个查询以显示员工姓名不匹配“Priya”的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 Name 列,后跟 NOT 前缀的 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“Priya”,后跟通配符运算符百分号 (%)。因此,根据查询,所有名称不以“Priya”开头,后跟任何字母的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有三条记录,其名称不以“Priya”开头,后跟任何字母。 示例 2 编写一个查询以显示员工姓名不匹配任何单个字符后跟“Na”并以“ik”结尾的员工详细信息。 查询 我们使用了 SELECT 查询,将 WHERE 子句应用于 City 列,后跟 NOT 前缀的 LIKE 子句。在 LIKE 子句中,我们指定了表达式值“Na”,后跟通配符运算符下划线 (_) 和字符串“ik”。因此,根据查询,所有名称不以“Priya”开头,后跟任何字母的记录都将被视为输出的一部分。 您将获得以下表格作为输出:
employee_details 表中有三条记录,其员工姓名不以“Na”开头,后跟任何单个字母,并以“ik”结尾。 下一个主题SQL 日期函数 |
我们请求您订阅我们的新闻通讯以获取最新更新。