替换和填充字符串
lpad(string text, length int [, fill text])
描述:通过填充字符fill(缺省时为空白),把string填充为length长度。如果string已经比length长则将其尾部截断。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT lpad('data', 8, 'xy'); lpad ---------- xyxydata (1 row) |
overlay(string placing string FROM int [for int])
描述:用指定的字符串替换原字符串中从指定位置开始的字符串部分,它可以灵活地处理字符串的替换操作。
参数说明:
FROM int,表示从第一个string的第几个字符开始替换。
for int,可选参数,表示替换第一个string的字符数目。如果不指定,默认替换从from开始的所有字符。
返回值类型:text
示例:从位置3开始,用“xyz'”替换原字符串中的部分,结果为“abxyzef”。
1 2 3 4 5 |
SELECT overlay('abcdef' placing 'xyz' FROM 3); overlay --------- abxyzf (1 row) |
在字符串“hello'”中,从第2个字符开始,连续替换3个字符,用“world”来覆盖这些位置,结果为“hworldo”。
1 2 3 4 5 |
SELECT overlay('hello' placing 'world' from 2 for 3 ); overlay --------- hworldo (1 row) |
replace(string text, from text, to text)
描述:将原字符串中所有匹配from参数的部分替换为to参数指定的内容。
replace函数大小写敏感,需确保from text和to text的大小写与原字符串匹配。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT replace('databasedata', 'data', 'xxx'); replace ------------ xxxbasexxx (1 row) |
rpad(string text, length int [, fill text])
描述:使用填充字符fill,把string填充到length长度。如果string已经比length长则将其从尾部截断。
参数说明:
- string,要处理的原字符串。
- length,目标字符串的长度。
- fill(可选参数):用于填充的字符或字符串。缺省时为单个空格 ' '。
返回值类型:text
示例:
使用填充字符“xy”将长度为4的原字符串“data”填充到目标长度10。
1 2 3 4 5 |
SELECT rpad('data', 10, 'xy'); rpad ------------ dataxyxyxy (1 row) |
使用字符“xy”填充原字符串“database”时,因string(database)比length(4)长,则将其从尾部截断,返回字符串data。
1 2 3 4 5 |
SELECT rpad('database',4,'xy'); rpad ------ data (1 row) |
rtrim(string text [, characters text])
描述:去除字符串右侧(末尾)的指定字符。
参数说明:
- string,要处理的原字符串。
- characters(可选参数),指定要从字符串右侧去除的字符集。缺省时,去除所有空白字符(例如,空格等)。
返回值类型:text
示例:
未指定characters参数时默认去除字符串“Database”右侧的空白字符。
1 2 3 4 5 |
SELECT rtrim('Database '); rtrim ---------- Database (1 row) |
去除字符串中的指定字符“x”。
1 2 3 4 5 |
SELECT rtrim('trimxxxx', 'x'); rtrim ------- trim (1 row) |
rpad(string varchar, length int [, fill varchar])
描述:在字符串右侧填充指定字符,使字符串达到指定长度。如果string已经比length长则将其从尾部截断。
参数说明:
- string,要处理的原字符串。
- length,目标字符串的长度。length参数在DWS中表示字符长度。一个汉字长度计算为一个字符。
- fill(可选参数):用于填充的字符或字符串。缺省时为单个空格 ' '。
返回值类型:varchar
示例:
1 2 3 4 5 |
SELECT rpad('data',10,'xyz'); rpad ------------ dataxyzxyz (1 row) |
1 2 3 4 5 |
SELECT rpad('hi',5,'abcdefg'); rpad ------- hiabc (1 row) |
replace(string varchar, search_string varchar, replacement_string varchar)
描述:用于在字符串中查找特定子字符串(search_string)并将其替换为另一个字符串(replacement_string)。
参数说明:
- string,要处理的原字符串。
- search_string,需要被替换的子字符串。
- replacement_string:用于替换search_string的新字符串。
返回值类型:varchar
示例:
将字符串“ababab and mabab”中的所有子字符串“ab”替换为“cd”。
1 2 3 4 5 |
SELECT replace('ababab and mabab','ab','cd'); replace ------------------ cdcdcd and mcdcd (1 row) |
lpad(string varchar, length int[, repeat_string varchar])
描述:在字符串的左侧填充指定字符,使得字符串达到指定的长度。如果原字符串的长度已经大于目标长度(length参数),则从右侧将目标字符串截断为长度为length的字符串。
参数说明:
- string,需要填充的原字符串。
- length,目标字符串的长度。
- repeat_string,可选参数,用于指定填充的字符。缺省时使用空格填充。
返回值类型:varchar
示例:
原字符串“base”长度为4,目标长度为8,使用字符串“*”填充4个字符,填充后为“****base”。
1 2 3 4 5 |
SELECT lpad('base',8,'*'); lpad ---------- ****base (1 row) |
原字符串“database”长度为8,目标长度为6,不需要填充,从右侧将字符串“database”截断为长度为6的字符串,返回“databa”。
1 2 3 4 5 |
SELECT lpad('database',6,'data'); lpad -------- databa (1 row) |
regexp_replace(string, pattern, replacement [,flags ])
描述:替换匹配POSIX正则表达式的子字符串。 如果没有匹配pattern,那么返回不加修改的string串。 如果有匹配,则返回的string串里面的匹配子串将被replacement串替换掉。
replacement串可以包含\n, 其中\n是1到9, 表明string串里匹配模式里第n个圆括号子表达式的子串应该被插入, 并且它可以包含\&表示应该插入匹配整个模式的子串。
可选的flags参数包含零个或多个改变函数行为的单字母标记,见下表。
|
选项 |
描述 |
|---|---|
|
g |
表示替换每一个匹配的子字符串而不仅仅是第一个(默认仅替换第一个匹配的子字符串) |
|
B |
默认情况下使用Henry Spencer正则库及其正则语法。指定B选项后,表示优先选用boost regex正则库及其正则语法。 以下两种情况在指定了B选项时,也会自动转换为选择Henry Spencer正则库及其正则语法:
|
|
b |
表示按照BRE(POSIX Basic Regular Expression)匹配模式的规则进行匹配。 |
|
c |
大小写敏感匹配 |
|
e |
表示按照ERE(POSIX Extended Regular Expression)匹配模式的规则进行匹配。当b和e都未指定时,如果选用的是Henry Spencer正则库,则按照ARE(Advanced Regular Expression,类似于Perl Regular Expression)匹配模式的规则进行匹配;如果选用的是boost regex正则库,则按照Perl Regular Expression匹配模式的规则进行匹配。 |
|
i |
大小写不敏感匹配 |
|
m |
换行敏感匹配,与选项n同义。 |
|
n |
换行敏感匹配。此选项生效时,换行符影响元字符(.、^、$和[^)的匹配。 |
|
p |
部分换行敏感匹配,此选项生效时,换行符影响元字符(.和[^)的匹配。部分是相对选项n而言。 |
|
q |
重置正则表达式为加双引号的文本字符串,所有都是普通字符。 |
|
s |
非换行敏感匹配。 |
|
t |
紧凑语法(缺省)。该选项生效时,所有字符都很重要。 |
|
w |
反部分换行敏感匹配,此选项生效时,换行符影响元字符(^和$)的匹配。部分是相对选项n而言。 |
|
x |
扩展语法。与紧凑语法相对,在扩展的语法中,正则表达式中的空白字符被忽略。空白字符包括空格、水平制表符、新行、和任何属于space字符表的字符。 |
返回值类型:varchar
示例:
1 2 3 4 5 6 7 8 9 10 |
SELECT regexp_replace('Thomas', '.[mN]a.', 'M'); regexp_replace ---------------- ThM (1 row) SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT; result ------------- fooXarYXazY (1 row) |
SPACE(n int)
描述:返回由n个空格组成的字符串。若参数含有NULL值,返回NULL。
返回值类型:text
示例:
1 2 3 4 5 |
SELECT SPACE(2) as result; result -------- (1 row) |