PostgreSQL Like

17 Mar 2025 | 6 分钟阅读

在本节中,我们将了解 PostgreSQL Like 条件 的工作原理,它用于使用模式匹配获取数据,以及 使用百分号 (%)、下划线 (_) 通配符的 Like 条件示例、Not Like 运算符的工作原理、ILIKE 运算符的工作原理 以及 PostgreSQL Like 运算符的扩展

PostgreSQL Like 条件简介

PostgreSQL Like 条件用于从满足 LIKE 条件的表中获取数据。结果包含区分大小写且遵循指定模式的字符串。

换句话说,我们也可以说 Like 条件 用于执行模式匹配以识别确切的结果。

为了实现模式匹配的目的,PostgreSQL 提供了两个不同的通配符,如下所示:

  • 百分号 (%) 通配符: 匹配任意零个或多个字符序列。
  • 下划线 (_) 通配符: 匹配任意单个字符。

PostgreSQL Like 条件语法

在 PostgreSQL 中,Like 条件可以与 SELECT、INSERT、UPDATE 和 DELETE 命令以及 WHERE 子句一起使用。

在上述语法中,使用 Like 条件,如果 值匹配 模式,则表达式将返回 true

我们可以使用 NOT 运算符 语法来否定 LIKE 运算符,如下所示:

在上述语法中,当 值不匹配 模式 时,使用 Not Like 条件 并返回 true

在上述语法中,我们使用了以下参数:

参数描述
表达式/值用于定义列或字段。
图案模式是一个字符表达式,其中包含模式匹配。
转义字符转义字符是一个可选参数,它允许我们测试通配符(如 % (百分号) 或 _ (下划线))的字面实例。

注意

  • 如果我们不想指定转义字符,PostgreSQL 假定 "\" 是转义字符。
  • 如果模式不包含任何通配符,则 Like 运算符的行为类似于等于 "=" 运算符。

使用百分号 (%) 通配符的 PostgreSQL Like 条件示例

让我们看一个示例来了解 PostgreSQL Like 条件 的工作原理

假设我们要识别一名员工,但我们不准确地记得他/她的名字。但我们知道他/她的名字以 kat 类似地开头。

现在问题来了,我们如何从数据库中识别特定员工?

因此,我们可以通过查看 Employee 表中的 emp_fname 列来识别 Employee 表中的 员工,以检查是否存在以 kat 开头的值。

如果 Employee 表有许多行,并且我们遵循上述过程,这可能需要更多时间。

因此,在下面的示例中,我们使用 PostgreSQL Like 条件 将员工的姓氏与字符串匹配,如以下命令所示:

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Like

上述语句返回 emp_fname 列中以 Kat 开头并可能后跟任意字符序列的行,这被称为 模式匹配技术

注1

  • 我们可以通过将字面值与通配符连接起来定义模式。
  • 为了识别匹配项,我们可以使用 LIKE 或 NOT LIKE 运算符。
  • WHERE 子句可以有一个不同的表达式:emp_fname,其中 LIKE 运算符 和一个字符串包含 百分号 (%)
  • 'Kat%' 字符串被称为 模式

PostgreSQL Like 运算符示例:模式匹配

让我们看一些使用 LIKE 运算符进行模式匹配的示例:

'abc' LIKE 'abc'true它将返回 true,因为 abc 模式不包含任何 通配符;因此 LIKE 运算符 的行为类似于 等于 (=) 运算符。
'abc' LIKE 'a_'False此表达式将返回 false,因为 模式 (a_) 匹配任何以 字母 a 开头并后跟 任意单个字符 的字符串。
'abc' LIKE '_b_'true它将返回 true,因为 模式 (_b_) 匹配任何以 任意单个字符 开头,后跟字母 b 并以任意单个字符结尾的字符串。
'abc' LIKE 'a%'true此表达式将返回 true,因为它匹配任何以 字母 a 开头并后跟任意数量字符的字符串。

注意:在 PostgreSQL 中,我们可以在模式的开头和结尾使用通配符。

在下面的示例中,特定命令将返回那些 员工emp_fname 包含 "in" 字符串的,例如 Katherine、Katrina、Karina 等。

输出

执行上述命令后,我们将获得以下输出

PostgreSQL Like

使用 Like 运算符的下划线 (_) 通配符示例

在这里,我们也将使用上述 Employee 表来展示下划线 (_) 通配符与 Like 运算符结合使用的效果。

在下面的示例中,我们将从 employee 表中选择 emp_fname、emp_lname 和 location,并在 emp_lname 中使用下划线通配符,使其以任意字符开头,后跟 "mith"

输出

执行上述命令后,我们将获得以下结果

PostgreSQL Like

现在,如果我们要将 下划线 (_) 和百分号 (%) 通配符 结合起来创建模式,如以下命令所示:

输出

执行上述命令后,我们将得到以下结果:

PostgreSQL Like

上述模式 _at% 匹配任何应该以 任意单个字符 (_) 开头的字符串,字面字符串应后跟字符串 at,字符串应以 任意数量的字符 结尾。它将返回 emp_fname 为 Katerine 和 Katrina。

注意

  • 要在字符串中的任意位置匹配 一个字符或一个序列模式 必须以 百分号 (%) 开头和结尾,因为 Like 模式匹配 总是包含 整个字符串
  • 搜索 条件可以包含数字或字面字符:其中 百分号 (%) 匹配 任意零个或多个字符序列
  • 模式中的 下划线 (_) 用于 匹配任意单个字符

PostgreSQL Not Like 条件示例

我们也可以在 PostgreSQL LIKE 条件中使用 NOT 运算符。以下示例显示了 Not Like 运算符的使用 来识别 员工emp_fname 不以 Kat 开头的记录。

输出

执行上述语句后,我们将得到以下结果:

PostgreSQL Like

PostgreSQL LIKE 运算符的扩展

在 PostgreSQL 中,我们还有 ILIKE 运算符,其工作方式与 LIKE 运算符 类似。

换句话说,我们可以说 ILIKE 运算符以 不区分大小写 的方式比较值。

在以下示例中,我们将在 employee 表中使用 ILIKE 运算符:

输出

执行上述命令后,我们将看到以下结果:

PostgreSQL Like

ka% 模式匹配任何以 Ka、kA、ka、KA 等开头的字符串。如果我们在 ILIKE 运算符 的位置使用 LIKE 运算符,命令将返回空结果。

PostgreSQL 还支持一些其他运算符,它们的功能与 LIKE、ILIKE、NOT LIKE 和 NOT ILIKE 运算符类似,如下表所示:

其他运算符等于
~~喜欢
!~~Not Like
~~*ILIKE
!~~*Not ILIKE

概述

在 PostgreSQL Like 条件部分,我们学习了以下主题:

  • 我们使用了带有 百分号 (%) 和下划线 (_) 通配符PostgreSQL Like 条件
  • 我们使用了 Not Like 运算符 从特定表中获取记录。
  • 我们同时使用了 百分号 (%) 和下划线 (_) 通配符 进行模式匹配。
  • 我们学习了 ILIKE 运算符,它用于使用模式匹配获取数据。
  • 我们了解了 PostgreSQL Like 运算符的 扩展

下一个主题PostgreSQL IN 条件