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);
该命令将返回以下内容
我们没有指定起始位置,因此子字符串提取从位置 1 开始。提取了 4 个字符以返回以上结果。
以下示例显示了如何指定起始位置。
SELECT substring('Guru99' from 1 for 4);
该命令将返回以下内容
我们指定了子字符串的提取应从位置 1 开始,并提取 4 个字符。
让我们从字符串 Guru99 中提取 99。
SELECT substring('Guru99' from 5);
该命令将返回以下内容
我们指定的起始位置是 5。由于未指定要提取的字符数,因此提取一直进行到字符串末尾。
这是另一个例子:
SELECT substring('Guru99' from 5 for 2);
该命令将返回以下内容
我们从位置 5 开始提取,并提取了 2 个字符。
考虑下面的 Book 表。
我们想大致了解每本书的名称。但是,我们只能从表的 name 列中提取前 15 个字符。
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
该命令将返回以下内容
现在我们对每本书的名称有了大致了解。
使用 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;
该命令将返回以下内容
我们的输入字符串是 your age is 22。在模式中,我们在字符串中搜索数字模式,找到后,substring 函数应该只提取两个字符。
如何使用 pgAdmin 匹配子字符串
现在让我们看看如何使用 pgAdmin 执行这些操作。
不需要数据库的上述查询可以直接从查询编辑器窗口执行。只需执行以下操作:
步骤 1) 登录您的帐户。
登录到您的 pgAdmin 帐户。
步骤 2) 在 pgAdmin 中,
单击“查询工具”图标。
将打开查询编辑器窗口。
步骤 3) 输入查询。
在编辑器窗口中键入以下查询。
SELECT substring('Guru99' for 4);
步骤 4) 执行查询。
单击“执行”图标以执行查询。
步骤 5) 查询执行完成。
它应该返回以下内容
示例 2
SELECT substring('Guru99' from 1 for 4);
它应该返回以下内容
这是下一个例子。
SELECT substring('Guru99' from 5);
它应该返回以下内容
示例 3
SELECT substring('Guru99' from 5 for 2);
它应该返回以下内容
现在,让我们使用演示数据库的 Book 表来运行示例。
步骤 1) 登录您的 pgAdmin 账户。
步骤 2)
- 在左侧的导航栏中,点击 Databases。
- 点击 Demo。
步骤 3) 在查询编辑器中输入查询
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
步骤 4) 点击 Execute 按钮。
它应该返回以下内容
现在我们对每本书的名称都有了基本了解。
使用 SQL 正则表达式匹配子字符串
要在 pgAdmin 上完成相同的操作,请执行以下操作:
步骤 1) 登录您的 pgAdmin 账户。
步骤 2) 单击“查询工具”图标。
将打开查询编辑器窗口。
步骤 3) 在编辑器窗口中键入以下查询。
SELECT SUBSTRING ( 'Your age is 22', '([0-9]{1,2})' ) as age;
步骤 4) 单击“执行”图标以执行查询。
它应该返回以下内容
摘要
- PostgreSQL Substring 函数有助于提取和返回字符串的某个部分。
- 字符串的第一个字符位于位置 1。
- 如果未指定要从字符串中提取的字符数,则函数将从指定的起始位置提取到字符串末尾的字符。
- 如果指定了要提取的字符数,则只提取该数量的字符。