openGauss SQL参考—函数和操作符:字符处理函数和操作符(4)
-
regexp_matches(string text, pattern text [, flags text])
描述:返回string中所有匹配POSIX正则表达式的子字符串。如果pattern不匹配,该函数不返回行。如果模式不包含圆括号子表达式,则每一个被返回的行都是一个单一元素的文本数组,其中包括匹配整个模式的子串。如果模式包含圆括号子表达式,该函数返回一个文本数组,它的第n个元素是匹配模式的第n个圆括号子表达式的子串。
flags参数为可选参数,包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。
须知:如果提供了最后一个参数,但参数值是空字符串(''),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为空集。这是因为A兼容模式将''作为NULL处理,避免此类行为的方式有如下几种:
-
将数据库SQL兼容模式改为C;
-
不提供最后一个参数,或最后一个参数不为空字符串。
返回值类型:setof text[]
示例:
openGauss=# SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'); regexp_matches ---------------- {bar,beque} (1 row) openGauss=# SELECT regexp_matches('foobarbequebaz', 'barbeque'); regexp_matches ---------------- {barbeque} (1 row) openGauss=# SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g'); result -------------- {bar,beque} {bazil,barf} (2 rows) -
-
regexp_split_to_array(string text, pattern text [, flags text ])
描述:用POSIX正则表达式作为分隔符,分隔string。和regexp_split_to_table相同,不过regexp_split_to_array会把它的结果以一个text数组的形式返回。
返回值类型:text[]
示例:
openGauss=# SELECT regexp_split_to_array('hello world', E'\\s+'); regexp_split_to_array ----------------------- {hello,world} (1 row) -
regexp_split_to_table(string text, pattern text [, flags text])
描述:用POSIX正则表达式作为分隔符,分隔string。如果没有与pattern的匹配,该函数返回string。如果有至少有一个匹配,对每一个匹配它都返回从上一个匹配的末尾(或者串的开头)到这次匹配开头之间的文本。当没有更多匹配时,它返回从上一次匹配的末尾到串末尾之间的文本。
flags参数包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配。
返回值类型:setof text
示例:
openGauss=# SELECT regexp_split_to_table('hello world', E'\\s+'); regexp_split_to_table ----------------------- hello world (2 rows) -
repeat(string text, number int )
描述:将string重复number次。
返回值类型:text。
示例:
openGauss=# SELECT repeat('Pg', 4); repeat ---------- PgPgPgPg (1 row)
说明:由于数据库内存分配机制限制单次内存分配不可超过1GB,因此number最大值不应超过(1G-x)/lengthb(string) - 1。x为头信息长度,通常大于4字节,其具体值在不同的场景下存在差异。
-
replace(string text, from text, to text)
描述:把字符串string里出现地所有子字符串from的内容替换成子字符串to的内容。
返回值类型:text
示例:
openGauss=# SELECT replace('abcdefabcdef', 'cd', 'XXX'); replace ---------------- abXXXefabXXXef (1 row) -
replace(string, substring)
描述:删除字符串string里出现的所有子字符串substring的内容。
string类型:text
substring类型:text
返回值类型:text
示例:
openGauss=# SELECT replace('abcdefabcdef', 'cd'); replace ---------------- abefabef (1 row) -
reverse(str)
描述:返回颠倒的字符串。
返回值类型:text
示例:
openGauss=# SELECT reverse('abcde'); reverse --------- edcba (1 row) -
right(str text, n int)
描述:返回字符串中的后n个字符。当n是负值时,返回除前|n|个字符以外的所有字符。
返回值类型:text
示例:
openGauss=# SELECT right('abcde', 2); right ------- de (1 row) openGauss=# SELECT right('abcde', -2); right ------- cde (1 row) -
rpad(string text, length int [, fill text])
描述:使用填充字符fill(缺省时为空白),把string填充到length长度。如果string已经比length长则将其从尾部截断。
返回值类型:text
示例:
openGauss=# SELECT rpad('hi', 5, 'xy'); rpad ------- hixyx (1 row) -
rtrim(string text [, characters text])
描述:从字符串string的结尾删除只包含characters中字符(缺省是个空白)的最长的字符串。
返回值类型:text
示例:
openGauss=# SELECT rtrim('trimxxxx', 'x'); rtrim ------- trim (1 row)

浙公网安备 33010602011771号