PostgreSQL SUBSTRING() 函数与正则表达式示例
什么是 PostgreSQL 子串?
这个 PostgreSQL substring 函数可帮助您提取并返回字符串的一部分。它不返回整个字符串,而是仅返回其中的一部分。
句法
这个 PostgreSQL substring 函数采用以下语法:
substring( string [from starting_position] [for length] )
参数
姓名 | 描述 |
---|---|
绳子 | 源字符串,其数据类型为varchar、char、string等。 |
起始位置 | 这是一个可选参数。它表示字符串提取的开始位置。如果省略此参数,提取将从位置 1 开始,即字符串中的第一个字符。 |
长度 | 可选参数,表示要从字符串中提取的字符数,如果省略此参数,函数将从starting_position提取到字符串末尾。 |
例子
在这个例子中,我们要从单词 Guru4 中提取前 99 个字符:
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 表:
我们想大致了解每本书的名字。但是,我们只能从表的名称列中提取前 15 个字符:
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
该命令将返回以下内容:
现在我们对每本书的名字有一个大致的了解了。
使用 SQL 正则表达式匹配子字符串
In PostgreSQL,我们可以提取与指定 POSIX 正则表达式匹配的子字符串。在这种情况下,substring 函数的语法如下:
SUBSTRING(string FROM matching_pattern)
or
SUBSTRING(string, matching_pattern);
以下是对上述参数的解释:
该字符串是源字符串,其 数据类型 是varchar,char,string等。
matching_pattern 是在字符串中用于搜索的模式。
例子
SELECT SUBSTRING ( 'Your age is 22', '([0-9]{1,2})' ) as age;
该命令将返回以下内容:
我们的输入字符串是你的年龄是 22 岁。在模式中,我们在字符串中搜索数字模式,当找到该模式时,子字符串函数应该只提取两个字符。
如何使用 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);
它应该返回以下内容:
现在,让我们使用 Demo 数据库的 Book 表运行示例:
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击数据库。
- 单击“演示”。
步骤3) 在查询编辑器中输入查询:
SELECT id, SUBSTRING(name, 1, 15 ) AS name_initial FROM Book ORDER BY id;
步骤4) 单击执行按钮。
它应该返回以下内容:
现在我们对每本书的名字有一个基本的了解。
使用 SQL 正则表达式匹配子字符串
要在 pgAdmin 上完成相同操作,请执行以下操作:
步骤1) 登录您的 pgAdmin 帐户。
步骤2) 单击查询工具图标。
查询编辑器窗口将会打开。
步骤3) 在编辑器窗口中输入以下查询。
SELECT SUBSTRING ( 'Your age is 22', '([0-9]{1,2})' ) as age;
步骤4) 单击执行图标来执行查询。
它应该返回以下内容:
结语
- 这个 PostgreSQL 子串函数有助于提取并返回字符串的一部分。
- 字符串的第一个字符位于位置 1。
- 如果没有指定要从字符串中提取的字符数,则该函数将从指定的起始位置到字符串的末尾提取字符。
- 如果指定了要提取的字符数,则只提取该数量的字符。