PostgreSQL字符串函数

-- 字符串拼接
select 'Post'||'greSQL'; -- PostgreSQL
-- 返回参数的长度位
select bit_length('one'); -- 24
-- 返回参数中的字符数
select char_length('中国'); -- 2
-- 同上
select length('中国'); -- 2
-- 不同编码下的长度
select length('中国','GBK'); -- 3
-- 字符串的字节数
select octet_length('中国'); -- 6
-- 将字符串转换成小写
select lower('HeLLO'); -- hello
-- 将字符串转换成大写
select upper('hello'); -- HELLO
-- 将字符串中每个单词的首字母大写
select initcap('hello world'); -- Hello World
-- 给定子字符串在字符串的位置
select position('lo' in 'hello'); -- 4
-- 功能同上,只是入参顺序相反
select strpos('hello','lo'); -- 4
-- 替换字符串,其中第一个int是开始位置,第二个int是长度,如果没有第二个int则长度默认为第二个字符串的长度
select overlay('Txxxxas' placing 'hom' from 2 for 4); -- Thomas
select overlay('Txxxxas' placing 'hom' from 2); -- Thomxas
-- 替换字符串,将第一个字符串中的第二个字符串替换成第三个字符串
select replace('Txxxxas','xxxx','hom'); -- Thomas
-- 把string中from字符替换成对应to中的字符
select translate('Txxxxas','Txas','hom'); -- hoooom
select translate('txxxa','xxxa','abcd'); -- taaad
-- 截取字符串,从from位置截取长度for,如果for省略,则是从from至结尾
select substring('hello world' from 2 for 3); -- ell
select substring('hello world' from 2); -- ello world
select substring('hello world',2,3); -- ell
-- 截取匹配posix正则表达式的字符串
select substring('hello world' from '...$'); -- rld
-- 截取匹配posix正则表达式的字符串,for为转移字符
select substring('Thomas' from '%#"o_a#"_' for '#'); -- oma
-- 去掉字符串两端的指定字符
select trim(both 'x' from 'xxjdhdxxxx'); -- jdhd
select trim(both from '  jdhd   ',' '); -- jdhd
-- 删除字符串两边指定的字符
select btrim('xxhhhxaxxx','x'); -- hhhxa
-- 删除字符串尾部指定的字符
select rtrim('xxhhhxxx','x'); -- xxhhh
-- 删除字符串开头指定的字符
select ltrim('xxhhhxxx','x'); -- hhhxxx
-- 返回字符串前n个字符,n为负数时返回除最后|n|个字符以外的所有字符
select left('hello',-2); -- hel
-- 返回字符串后n个字符,n为负数时返回除最前|n|个字符意外的所有字符
select right('hello',2); -- lo
-- 字符串第一个字符的ASCII值
select ascii('xa'); -- 120
-- 将数字转换成字符
select chr(65); -- A
-- 连接所有参数,个数不限,类型不限
select concat('x','man',3); -- xman3
-- 功能同上,只是第一个参数是连接分隔符
select concat_ws(',','x','man',3); -- x,man,3
-- 将字符串从指定编码转换至目的编码格式
select convert('Hello','UTF8','GBK'); -- \x48656c6c6f
-- format格式化 格式说明符由 % 字符引进,格式为 %[position] [type]
-- position (可选) n$ 格式的字符串,这里的n是要打印的参数的索引。索引为1表示在formatstr之后的第一个参数。如果省略了position,默认使用序列中的下一个参数。
-- type (必须) 格式转换的类型用来产生格式说明符的输出。支持下列的类型:
-- s 格式参数值为简单的字符串。空值作为空字符串对待。
-- I 将参数值作为SQL标识符对待,如果需要,双写它。值为空是错误的。
-- L 引用参数值作为SQL文字。空值用字符串 NULL 显示,没有引用。
-- 除了上述的格式说明符,特殊的序列 %% 可以用作输出 % 字符。
select format('Hello %s', 'World'); -- Hello World
select format('Testing %s, %s, %s, %%', 'one', 'two', 'three'); -- Testing one, two, three, %
-- 格式化字符串,类似C语言的sprintf,其中n$表示第n个参数
select format('Hello %s, %1$s', 'World'); -- Hello World, World
-- 在字符串开头填充text至长度为length,缺省为空白,如果string的长度已经大于length,则会截断后面多余length的字符
select lpad('123',5,'0'); -- 00123
select lpad('123456',5,'0'); -- 12345
select lpad('123',5); --   123
-- 在字符串尾部填充text至长度为length,缺省为空白,如果string的长度已经大于length,则会截断后面多余length的字符
select rpad('he',1,'o'); -- h
select rpad('he',3,'o'); -- heo
-- 计算string的md5散列值,并以十六进制返回
select md5('hello'); -- 5d41402abc4b2a76b9719d911017c592
-- 获取当前客户端编码
select pg_client_encoding();
-- 将字符串string以delimiter进行分割,并返回第field个子串
select split_part('1|2|3','|',2); -- 2
-- 将string重复number次
select repeat('Hi',2); -- HiHi
-- 返回适合SQL语句标志符且使用适当引号的字符串,在字符串两端加双引号,如果字符串中出现双引号,返回结果中将变成两个,如果有2个连续的单引号,返回时只有1个
select quote_ident('Foo"''"bar'); -- "Foo""'""bar"
-- 功能同上,只是内嵌的单引号和双引号被原样保留
select quote_literal('Foo"''bar'); -- 'Foo"''bar'
-- 将给定值转成text
select quote_literal(45); -- '45'
-- 功能同quote_literal(string text),只是参数是NULL时返回NULL
select quote_nullable('aaa'); -- 'aaa'
select quote_nullable(null); -- NULL
-- 功能同quote_literal(value anyelement),只是参数为NULL时返回NULL
select quote_nullable(45); -- '45'
select quote_nullable(null); -- NULL
-- 将数值转换成十六进制
select to_hex(155); -- 9b
-- 将字符串逆序输出
select reverse('daiyuanpei'); -- iepnauyiad
-- 将字符串匹配posix正则表达式分割为字符串数组
select regexp_split_to_array('hello world', E'\\s+'); -- {hello,world}
-- 功能同上,只是以单列形式返回
select regexp_split_to_table('hello world', E'\\s+');
-- 返回string中第一个匹配posix正则表达式的子串,如果flag=g,则返回所有
select regexp_matches('foobarbequebaz', '(b..)','g');
-- 将匹配posix正则表达式的第一个子串替换成指定字符串,如果flag=g,则替换所有
select regexp_replace('Thomas', '.[mN]a.', 'M'); -- ThM
-- format格式化示例
-- 下面语句结果 INSERT INTO "Foo bar" VALUES('O''Reilly')
select format('INSERT INTO %I VALUES(%L)', 'Foo bar', E'O\'Reilly');

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值