PostgreSQL SUBSTRING() 函数及 Regex 示例

什么是 PostgreSQL 子字符串?

PostgreSQL 的 substring 函数用于提取并返回字符串的一部分。它不返回整个字符串,而是仅返回其中的一部分。

语法

PostgreSQL substring 函数的语法如下:

substring( string [from starting_position] [for length] )

参数

名称 描述
string 源字符串,其数据类型为 varchar、char、string 等。
starting_position 这是一个可选参数。它表示字符串提取的开始位置。如果省略此参数,提取将从位置 1(即字符串的第一个字符)开始。
length 这是一个可选参数。它表示要从字符串中提取的字符数。如果省略此参数,函数将从 starting_position 提取到字符串末尾。

示例

在此示例中,我们要从单词 Guru99 中提取前 4 个字符。

SELECT substring('Guru99' for 4);

该命令将返回以下内容

PostgreSQL Substring

我们没有指定起始位置,因此子字符串提取从位置 1 开始。提取了 4 个字符以返回以上结果。

以下示例显示了如何指定起始位置。

SELECT substring('Guru99' from 1 for 4);

该命令将返回以下内容

PostgreSQL Substring

我们指定了子字符串的提取应从位置 1 开始,并提取 4 个字符。

让我们从字符串 Guru99 中提取 99。

SELECT substring('Guru99' from 5);

该命令将返回以下内容

PostgreSQL Substring

我们指定的起始位置是 5。由于未指定要提取的字符数,因此提取一直进行到字符串末尾。

这是另一个例子:

SELECT substring('Guru99' from 5 for 2);

该命令将返回以下内容

PostgreSQL Substring

我们从位置 5 开始提取,并提取了 2 个字符。

考虑下面的 Book 表。

PostgreSQL Substring

我们想大致了解每本书的名称。但是,我们只能从表的 name 列中提取前 15 个字符。

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

该命令将返回以下内容

PostgreSQL Substring

现在我们对每本书的名称有了大致了解。

使用 SQL 正则表达式匹配子字符串

在 PostgreSQL 中,我们可以使用指定的 POSIX 正则表达式提取子字符串。在这种情况下,substring 函数的用法如下:

SUBSTRING(string FROM matching_pattern)

SUBSTRING(string, matching_pattern);

以下是对上述参数的解释:

string 是源字符串,其 数据类型 为 varchar、char、string 等。

matching_pattern 是用于在字符串中搜索的模式。

示例

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

该命令将返回以下内容

Matching Substrings with SQL Regular Expression

我们的输入字符串是 your age is 22。在模式中,我们在字符串中搜索数字模式,找到后,substring 函数应该只提取两个字符。

如何使用 pgAdmin 匹配子字符串

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

不需要数据库的上述查询可以直接从查询编辑器窗口执行。只需执行以下操作:

步骤 1) 登录您的帐户。
登录到您的 pgAdmin 帐户。

步骤 2) 在 pgAdmin 中,
单击“查询工具”图标。

Matching Substrings Using pgAdmin

将打开查询编辑器窗口。

步骤 3) 输入查询。
在编辑器窗口中键入以下查询。

SELECT substring('Guru99' for 4);

步骤 4) 执行查询。
单击“执行”图标以执行查询。

Matching Substrings Using pgAdmin

步骤 5) 查询执行完成。
它应该返回以下内容

Matching Substrings Using pgAdmin

示例 2

SELECT substring('Guru99' from 1 for 4);

它应该返回以下内容

Matching Substrings Using pgAdmin

这是下一个例子。

SELECT substring('Guru99' from 5);

它应该返回以下内容

Matching Substrings Using pgAdmin

示例 3

SELECT substring('Guru99' from 5 for 2);

它应该返回以下内容

Matching Substrings Using pgAdmin

现在,让我们使用演示数据库的 Book 表来运行示例。

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

步骤 2)

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

Matching Substrings Using pgAdmin

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

SELECT
   id,
   SUBSTRING(name, 1, 15 ) AS name_initial
FROM
   Book
ORDER BY
   id;

步骤 4) 点击 Execute 按钮。

Matching Substrings Using pgAdmin

它应该返回以下内容

PostgreSQL Substring

现在我们对每本书的名称都有了基本了解。

使用 SQL 正则表达式匹配子字符串

要在 pgAdmin 上完成相同的操作,请执行以下操作:

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

步骤 2) 单击“查询工具”图标。

Matching Substrings with SQL Regular Expression

将打开查询编辑器窗口。

步骤 3) 在编辑器窗口中键入以下查询。

SELECT
   SUBSTRING (
      'Your age is 22',
      '([0-9]{1,2})'
   ) as age;

步骤 4) 单击“执行”图标以执行查询。

Matching Substrings with SQL Regular Expression

它应该返回以下内容

Matching Substrings with SQL Regular Expression

摘要

  • PostgreSQL Substring 函数有助于提取和返回字符串的某个部分。
  • 字符串的第一个字符位于位置 1。
  • 如果未指定要从字符串中提取的字符数,则函数将从指定的起始位置提取到字符串末尾的字符。
  • 如果指定了要提取的字符数,则只提取该数量的字符。

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