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 正则表达式匹配整个字符串时才会成功,因此上面的例子中使用 #"
分隔返回字符串。