PostgreSQL substring() 函数使用指南

PostgreSQL substring() 函数从一个指定的字符串中根据指定的起始位置和长度提取子字符串,或者根据正则表达式提取子字符串。

substring() 语法

这是 PostgreSQL substring() 函数的语法:

substring(string [FROM start] [FOR length])

substring(string FROM pattern)

substring(string SIMILAR pattern ESCAPE escape)

参数

string
必需的。 一个字符串。
start
可选的。 子字符串的起始位置。默认是 1,也就是字符串的开头。
length
可选的。 子字符串的长度。默认是提取到字符串的结尾。
pattern
必需的。 正则表达式。 FROM pattern 子句中使用的是 POSIX 正则表达式;SIMILAR pattern 子句中使用的是 SQL 正则表达式。
escape
必需的。 转义字符。

返回值

PostgreSQL substring() 函数从字符串 string 中提取从位置 start 开始且长度为 length 的子字符串并返回。若没有指定参数 length,则提取从 start 开始到字符串 string 的结尾的子字符串。

如果 start + length 超过了字符串 string 的长度,则返回 start 到字符串的结尾 string 的子字符串。

若参数为 NULL,该函数将返回 NULL

substring() 示例

语法 1 示例

SELECT
    substring('hello' FROM 2) AS "substring('hello' FROM 2)",
    substring('hello' FROM 2 FOR 2) AS "substring('hello' FROM 2 FOR 2)",
    substring('hello' FOR 2) AS "substring('hello' FOR 2)";
-[ RECORD 1 ]-------------------+-----
substring('hello' FROM 2)       | ello
substring('hello' FROM 2 FOR 2) | el
substring('hello' FOR 2)        | he

语法 2 示例

SELECT
    substring('hello' FROM '^.{2}') AS "substring('hello' FROM '^.{2}')",
    substring('hello' FROM '.{3}$') AS "substring('hello' FROM '.{3}$')";
-[ RECORD 1 ]-------------------+----
substring('hello' FROM '^.{2}') | he
substring('hello' FROM '.{3}$') | llo

这里,FROM pattern 子句中使用的是 POSIX 正则表达式。

语法 3 示例

SELECT substring('hello' SIMILAR '%#"__l#"%' ESCAPE '#');
 substring
-----------
 hel

这里,SIMILAR pattern 语句中使用的是 SQL 正则表达式,就像 LIKE 一样。

注意,SIMILAR 语句只有在 SQL 正则表达式匹配整个字符串时才会成功,因此上面的例子中使用 #" 分隔返回字符串。