在上一篇博文中我们交流了数值型函数,这篇我们将讨论PostgreSQL中的字符型函数。
1. reverse(string)
reverse函数可以将string字符串的字母显示顺序颠倒。
test=# select reverse ('world');
reverse
---------
dlrow
(1 row)
test=#
2. position(str1 in str)
position函数用来返回子字符串str1在str中的开始位置。
test=# select position ('ball' in 'basketball');
position
----------
7
(1 row)
test=#
3. replace (s,s1,s2)
replace函数返回字符串s2替代字符串s中所有的字符串s1后的结果。
test=# select replace ('aello','a','h');
replace
---------
hello
(1 row)
test=#
4. repeat(s,n)
repeat用来返回字符串s重复n次的值。当n<=0、s或n为null,都会返回空值。
test=# select repeat('world',2) as col1,repeat('world',-1) as col2,repeat(null,2) as col3,repeat('world',null);
col1 | col2 | col3 | repeat
------------+------+------+--------
worldworld | | |
(1 row)
test=#
5. ltrim(str)、rtrim(str)和trim(str)
ltrim返回删除左边空格后的字符串str;
rtrim返回删除右边空格后的字符串str;
trim返回删除左右两边空格后的字符串str。
test=# select '( world )',concat('(',ltrim(' world '),')') as col1,concat('(',rtrim(' world '),')') as col2,concat('(',trim(' world '),')') as col3;
?column? | col1 | col2 | col3
-----------+----------+----------+---------
( world ) | (world ) | ( world) | (world)
(1 row)
test=#
6. trim (s1 from s)
trim (s1 from s)删除字符串s中两端的s1,当s1缺省时,默认删除空格。在字符串内部出现的s1不会被删除。
test=# select trim ('abc' from 'abcpostabcgresqlabc');
btrim
---------------
postabcgresql
(1 row)
test=#
7. lpad(s1,len,s2)和rpad(s1,len,s2)
lpad和rpad函数,用字符串s2在s1的左/右填充,使s1到达len个字符长度,最终返回填充后的s1。假如s1大于len长度,则返回值被缩短至len长度。
test=# select 'world',lpad('world',10,'x') as col1,lpad('world',3,'x') as col2,rpad('world',10,'x') as col3,rpad('world',3,'x') as col4;
?column? | col1 | col2 | col3 | col4
----------+------------+------+------------+------
world | xxxxxworld | wor | worldxxxxx | wor
(1 row)
test=#
8. left(s,n)和right(s,n)
left(s,n)和right(s,n)返回字符串s最左/右边开始的n的字符。
test=# select left('postgresql',4) as col1,right('postgresql',3) as col2;
col1 | col2
------+------
post | sql
(1 row)
test=#
9. concat(s1,s2,s3...)和concat_ws(x,s1,s2,s3...)
concat(s1,s2,s3...)表示将括号内的字符串连接在一起,不能指定分隔符;
concat_ws(x,s1,s2,s3...)功能和concat一样,但可以指定x为分隔符;
括号内的字符串为null,则在连接时自动忽略;只要有一个参数是二进制字符串,那么结果将会是二进制字符串格式。
test=# select concat('I','Love','China') as col1,concat_ws('-','I','Love','China') as col2;
col1 | col2
------------+--------------
ILoveChina | I-Love-China
(1 row)
test=#
10. char_length(str)和length(str)
char_length返回str字符串的字符个数,length返回字符串str的字节个数。在我们经常使用的utf8字符集中,一个数字或者字符占一个字节,一个汉字占三个字节。
test=# select char_length('world') as col1,length('world') as col2;
col1 | col2
------+------
5 | 5
(1 row)
test=#