更新时间:2025-11-19 GMT+08:00
分享

替换和填充字符串

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参数包含零个或多个改变函数行为的单字母标记,见下表。

表1 flags参数的可选项

选项

描述

g

表示替换每一个匹配的子字符串而不仅仅是第一个(默认仅替换第一个匹配的子字符串)

B

默认情况下使用Henry Spencer正则库及其正则语法。指定B选项后,表示优先选用boost regex正则库及其正则语法。

以下两种情况在指定了B选项时,也会自动转换为选择Henry Spencer正则库及其正则语法:

  • flags同时指定了p、q、w、x中的任意个字符。
  • string或pattern参数中含有多字节字符。

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)

相关文档