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


PostgreSQL LIKE 操作符帮助我们使用通配符将文本值与模式进行匹配。可以匹配搜索表达式与模式表达式。

如果匹配发生,LIKE 操作符将返回 true。借助 LIKE 操作符,可以在 SELECT、UPDATE、INSERT 或 DELETE 语句的 WHERE 子句中使用通配符。

通配符

只有两个通配符可以与

  • 百分号 (%)
  • 下划线 (_)

百分号 (%) 用于表示零个、一个或多个字符或数字。

下划线通配符 (_) 用于表示一个字符或数字。这些符号也可以组合使用。如果 LIKE 操作符不与这两个符号一起使用,它将像等于操作符一样工作。

语法

LIKE 操作符的语法如下:

expression LIKE pattern [ ESCAPE 'escape-character' ]

表达式是字符表达式,如列或字段。

模式是带有模式匹配的字符表达式。

escape-character 是一个可选参数。它允许测试通配符字符(如 % 和 _)的字面实例。如果未提供,则 \ 将被用作转义字符。

使用 % 通配符

正如我们之前所说,% 符号匹配零个、一个或多个字符或数字。考虑下表

Book

Using % wildcard

我们想要一本名字类似“Lear…”的书,要得到这个结果,我们可以运行以下命令

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

这将返回以下内容

Using % wildcard

书找到了。

让我们搜索名字中包含“by”的书

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

这将返回以下内容

Using % wildcard

使用 _ 通配符

正如我们之前所说,_ 符号表示一个字符或数字。它可以按如下方式使用:

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

这将返回以下内容

Using _ wildcard

这是另一个例子

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

这将返回以下内容

Using _ wildcard

使用 NOT 操作符

当 LIKE 操作符与 NOT 操作符结合使用时,将返回任何不匹配搜索模式的行。例如,要查看名字不以“post”开头的书,我们可以运行以下命令

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

这将返回以下内容

Using NOT Operator

只有一本书符合搜索条件。让我们看看那些名字中不包含“Made”一词的书名列表

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

这将返回以下内容

Using NOT Operator

3 行符合搜索条件。

使用 pgAdmin

现在让我们看看如何使用 pgAdmin 执行这些操作。

使用 % 通配符

步骤 1) 登录您的 pgAdmin 账户。

步骤 2)

  1. 在左侧的导航栏中,点击 Databases。
  2. 点击 Demo。

Using pgAdmin With % wildcard

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

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

步骤 4) 点击 Execute 按钮。

Using pgAdmin With % wildcard

它应该返回以下内容

Using pgAdmin With % wildcard

搜索名字中包含“by”的书

步骤 1) 在查询编辑器中键入以下命令

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

步骤 2) 单击执行按钮。

Using pgAdmin With % wildcard

它应该返回以下内容

Using pgAdmin With % wildcard

使用 _ 通配符

步骤 1) 登录您的 pgAdmin 账户。

步骤 2)

  1. 在左侧的导航栏中,点击 Databases。
  2. 点击 Demo。

Using pgAdmin With _ wildcard

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

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

步骤 4) 点击 Execute 按钮。

Using pgAdmin With _ wildcard

它应该返回以下内容

Using pgAdmin With _ wildcard

步骤 5) 运行第二个例子

  1. 在查询编辑器中键入以下查询
    SELECT *
    FROM
       Book
    WHERE
       name LIKE '%Beginner_';
    
  2. 点击 Execute 按钮。

Using pgAdmin With _ wildcard

它应该返回以下内容

Using pgAdmin With _ wildcard

使用 NOT 操作符

步骤 1) 登录您的 pgAdmin 账户。

步骤 2)

  1. 在左侧的导航栏中,点击 Databases。
  2. 点击 Demo。

Using NOT Operator in pgAdmin

步骤 3) 要查看所有名字不以“Post”开头的所有书,请在查询编辑器中键入查询

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

步骤 4) 点击 Execute 按钮。

Using NOT Operator in pgAdmin

它应该返回以下内容

Using NOT Operator in pgAdmin

Using NOT Operator in pgAdmin

查看名字中不包含“Made”一词的书名列表

步骤 1) 在查询编辑器中键入以下查询

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

步骤 2) 单击执行按钮。

Using NOT Operator in pgAdmin

它应该返回以下内容

Using NOT Operator in pgAdmin

摘要

  • PostgreSQL LIKE 用于使用通配符将文本值与模式进行匹配。
  • LIKE 子句允许我们在 SELECT、UPDATE、INSERT 或 DELETE 语句中使用通配符。
  • 百分号 (%) 通配符匹配一个或多个值。这些值可以是数字或字符。
  • 下划线 (_) 通配符正好匹配一个值。该值可以是字符或数字。
  • LIKE 操作符可以与 NOT 操作符结合使用,以返回任何不匹配搜索模式的行。

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