PostgreSQL LIKE、Not Like、通配符 (%, _ ) 示例

⚡ 智能摘要

PostgreSQL LIKE 函数使用两个通配符(百分号和下划线)将文本与特定模式进行匹配。本教程演示如何在 SELECT 语句中使用 LIKE 和 NOT LIKE,并提供 psql 和 pgAdmin 的示例代码。

  • 🔍 核心优势 OperaTOR: LIKE 将列或表达式与通配符模式进行比较,如果匹配则返回 true。
  • 🌟 两张外卡: % 匹配零个或多个字符; _ 正好匹配一个字符。
  • 反向匹配: 将 NOT 与 LIKE 结合使用,返回符合条件的行。 不会 匹配图案。
  • 🛠️ 两种界面: 从 psql 命令行或在 pgAdmin 中以图形方式运行相同的查询。
  • 🎯 转义字符: 使用 ESCAPE 子句来匹配模式中的字面 % 或 _ 字符。
  • 🤖 人工智能提升: AI 数据库工具将纯语言搜索需求转换为 LIKE 模式,并在需要不区分大小写匹配时建议 ILIKE。

PostgreSQL LIKE、Not Like、通配符 (%, _ ) 示例

此 PostgreSQL LIKE 运算符使用通配符将文本值与模式进行匹配。如果搜索表达式与模式匹配,则 LIKE 返回 true通配符在以下情况下有效: WHERE 的条款 SELECT, UPDATE, INSERTDELETE.

是什么 PostgreSQL 通配符?

PostgreSQL 支持两个 LIKE 通配符:

  • 百分号(%): 匹配零个、一个或多个字符或数字。
  • 下划线(_): 正好匹配一个字符或数字。

这两个符号可以组合在同一个模式中。如果 LIKE 不使用任何通配符,它​​的行为类似于等号 (=) 操作员。

PostgreSQL LIKE 语法

LIKE 的基本语法是:

expression LIKE pattern [ ESCAPE 'escape-character' ]
  • 表达 — 字符表达式,通常是列名或字段名。
  • 模式 — 包含通配符的字符表达式。
  • 转义字符 — 可选。允许您匹配字面值 % or _ 字符。省略时,反斜杠(\) 是默认的转义字符。

PostgreSQL 就像使用 % 通配符一样

% 符号匹配零个、一个或多个字符。请考虑以下情况。 Book 表:

LIKE 示例中使用的示例簿表格

要查找书名以“Lear”开头的书籍,请运行以下查询。

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

查询结果如下:

LIKE Lear% 查询结果返回匹配的书籍

查找书名中包含“by”的书籍:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

查询结果如下:

LIKE %by% 查询结果与匹配的书籍

PostgreSQL 带有_通配符的点赞

_ 符号匹配一个字符。以下查询查找以任意单个字母开头,后跟“earn”,再后跟任意后缀的名称:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

查询结果如下:

LIKE _earn% 查询结果,带有单字符前缀

另一个例子——匹配任何以“Beginner”加上一个额外字符结尾的文本:

SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';

查询结果如下:

LIKE %Beginner_ 查询结果匹配尾随单个字符

PostgreSQL 不喜欢 Opera器

将 LIKE 与 NOT 结合使用,返回符合条件的行。 不会 找出符合规律的书籍。例如,列出所有书名不以“Post”开头的书籍:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

查询结果如下:

NOT LIKE Post% 结果排除以 Post 开头的书籍

只有一本书符合条件。现在列出所有书名符合条件的书。 不会 包含“Made”一词:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

查询结果如下:

不像 %Made% 结果那样返回三本匹配的书籍

有三行满足条件。

使用 pgAdmin 的 LIKE 功能

同样的查询也可以在 pgAdmin 的查询工具中以图形方式运行。

pgAdmin 中的通配符

步骤1) 登录 pgAdmin。

步骤2) 在左侧导航栏中,单击 数据库,然后点击 演示.

pgAdmin 导航树(包含数据库和演示)已展开

步骤3) 在查询编辑器中输入查询语句:

SELECT *
FROM
   Book
WHERE
   name LIKE 'Lear%';

步骤4) 点击 演练:.

pgAdmin 查询工具及其“执行”工具栏按钮

结果窗格显示匹配的书籍:

pgAdmin 结果窗格中 LIKE Lear% 查询

要搜索书名中包含“by”的书籍:

步骤1) 在查询编辑器中输入以下内容:

SELECT *
FROM
   Book
WHERE
   name LIKE '%by%';

步骤2) 点击 演练:.

pgAdmin 查询工具正在运行 LIKE %by% 查询

结果窗格显示:

pgAdmin 结果窗格中 LIKE %by% 查询

pgAdmin 中的通配符

步骤1) 登录 pgAdmin。

步骤2) 在左侧导航栏中,单击 数据库,然后点击 演示.

pgAdmin导航树显示数据库树

步骤3) 在查询编辑器中输入查询语句:

SELECT *
FROM
   Book
WHERE
   name LIKE '_earn%';

步骤4) 点击 演练:.

pgAdmin 查询工具正在运行 LIKE _earn% 查询

结果窗格显示:

pgAdmin 结果窗格中 LIKE _earn% 查询

步骤5) 运行第二个示例:

  1. 在查询编辑器中输入查询语句:
SELECT *
FROM
   Book
WHERE
   name LIKE '%Beginner_';
  1. 点击 演练:.

pgAdmin 查询工具运行方式类似于 %Beginner_ 查询

结果窗格显示:

pgAdmin 结果窗格中 LIKE %Beginner_ 查询

与 pgAdmin 不同

步骤1) 登录 pgAdmin。

步骤2) 在左侧导航栏中,单击 数据库,然后点击 演示.

pgAdmin 导航树(例如 NOT LIKE)

步骤3) 要列出所有书名不以“Post”开头的书籍,请键入:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE 'Post%';

步骤4) 点击 演练:.

pgAdmin 查询工具运行不像 Post% 查询

结果窗格显示:

pgAdmin 结果窗格中 NOT LIKE Post% 查询

NOT LIKE 查询的 pgAdmin 结果详情

列出书名中不包含“Made”一词的书籍:

步骤1) 在查询编辑器中输入以下内容:

SELECT *
FROM
   Book
WHERE
   name NOT LIKE '%Made%';

步骤2) 点击 演练:.

pgAdmin 查询工具运行结果与 %Made% 查询不符

结果窗格显示:

pgAdmin 结果窗格中显示 NOT LIKE %Made% 查询

下载本教程中使用的数据库.

常见问题

LIKE 区分大小写,而 ILIKE 执行不区分大小写的匹配。ILIKE 是一个 PostgreSQL 扩展。例如,名称 ILIKE 'lear%' 可以同时匹配“Learn”和“LEAR”。当用户输入的大小写不可预测时,请使用 ILIKE。

使用 ESCAPE 子句声明转义字符,然后在通配符前面加上转义字符。例如,WHERE 子句 LIKE '50!%%' ESCAPE '!' 会查找以“50%”开头的值,因为感叹号可以转义百分号。

使用 LIKE 函数进行简单的前缀、后缀或子字符串匹配。当需要字符类、交替匹配或量词时,请切换到 POSIX 正则表达式(~ 和 ~*)。正则表达式功能更强大,但对于基本模式,通常比 LIKE 函数慢。

是的。 AI 诸如文本到 SQL 的辅助工具之类的工具可以将“查找电子邮件中包含 acme 的客户”之类的提示翻译成类似“%acme%”的名称,并解释通配符逻辑,从而加快临时报告速度。

生成式人工智能会检查查询计划,为以通配符开头的 LIKE 搜索推荐三元组索引 (pg_trgm),并重写阻止索引使用的模式。这使得在大数据集上进行全表扫描可以缩短到毫秒级的查找时间。 PostgreSQL 表。

总结一下这篇文章: