1.计算字符串字符数和字符串长度的函数
CHAR_LENGTH(str)返回值为字符串str所包含的字符个数。一个多字节字符算作一个单字符。
select char_length('date'),char_length('egg');
LENGTH(str)返回值为字符串的字节长度,使用utf8编码字符集时,一个汉字是3字节,一个数字或字母算一字节。
select length('date'),length('egg');
2.合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)
CONCAT(s1,s2,…)返回结果为连接参数产生的字符串。任何一个参数为NULL,返回值就为NULL。如果所有参数均为非二进制字符串,那么结果为非二进制字符串。如果自变量中含有任一二进制字符串,那么结果为一个二进制字符串。
select concat('PostgreSQL','9.15'),concat('Postgre',NULL,'SQL');
CONCAT_WS(x,s1,s2,…)中的CONCAT_WS代表CONCAT With Separator,是CONCAT()的特殊形式。第一个参数x是其他参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符既可以是一个字符串,也可以是其他参数。如果分隔符为NULL,结果就为NULL。函数会忽略任何分隔符参数后的NULL值。
select concat_ws('-','1st','2nd','3rd'),concat_ws('*','1st',null,'3rd');
3.获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n)
LEFT(s,n)返回字符串s开始的最左边n个字符
select left('football',5);
使用RIGHT(s,n)返回字符串s最右边n个字符
select right('football',4);
4.填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2)
LPAD(s1,len,s2)返回字符串s1,其左边由字符串s2填充,填充长度为len。假如s1的长度大于len,则返回值被缩短至len字符。
select lpad('hello',4,'??'),lpad('hello',10,'??');
RPAD(s1,len,s2)返回字符串s1,其右边被字符串s2填补至len字符长度。加入字符串s1的长度大于len,则返回值被缩短到与len字符相同的长度。
select rpad('hello',4,'?'),rpad('hello',10,'?');
5.删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s)
LTRIM(s)返回字符串s,字符串左侧空格字符被删除
select '( book )',concat('(',LTRIM(' book '),')');
RTRIM(s)返回字符串s,字符串右侧空格字符被删除
select '( book )',concat('(',rtrim(' book '),')');
TRIM(s)删除字符串s两侧的空格
select '( book )',concat('(',trim(' book '),')');
6.删除指定字符串的函数TRIM(s1 FROM s)
select trim('xy' from 'xyboxyokxyxy');
删除字符串’xyboxyokxyxy’两端的重复字符串’xy’,而中间的’xy’并不删除,结果为‘boxyok’
7.重复生成字符串的函数REPEA(s,n)
REPEA(s,n)返回一个由重复的字符串s组成的字符串,n表示重复生成的次数。若n<=0,则返回一个空字符串;若s或n为null,则返回n。
select repeat('PostgreSQL',3);
select repeat(NULL,3)
select repeat('PostgreSQL',NULL)
8.替换函数REPLACE(s,s1,s2)
REPLACE(s,s1,s2)使用字符串s2代替字符串s中所有的字符串s1
select replace('xxx.PostgreSQL.com','x','w');
9.获取字串的函数SUBSTRING(s,n,len)
SUBSTRING(s,n,len)表示从字符串s返回一个长度为len的子字符串,起始于位置n。也可能对n使用一个负值。假如这样,则字符串的位置起始于字符串结尾的n个字符,即倒数第n个字符。
select substring('breakfast',5) as col1,substring('breakfast',5,3) as clo2,substring('lunch',-3) as clo3;
如果对len使用的是一个小于1的值,那么结果始终为整个字符串。
10.匹配字符串开始位置的函数POSITION(str1 IN str)
POSITION(str1 IN str)函数的作用是返回子字符串str1在字符串str中的开始位置。
select position('ball' in 'football');
11.字符串逆序函数
select reverse('abc');