pgsql截取字符串函数_postgresql字符串函数与操作符号(一)

字符串拼接

使用 || 拼接

db01=> select 'sss' || 'aaa','sss' || 123;

sssaaa | sss123

db01=> select 111 || 222;

ERROR: operator does not exist: integer || integer

LINE 1: select 111 || 222;

^

HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

db01=> select 111 || 222::text;

111222

都是数字,至少要有一个显式转成字符串.

使用函数拼接

db01=> select concat('aa','bb'),concat('aa','bb',11),concat(11,22);

aabb | aabb11 | 1122

函数对于处理int类型当做字符串处理

使用分隔符拼接

db01=> select concat_ws('$','aa','bb','cc');

aa$bb$cc

长度相关

[postgres@fnddb ~]$ export LANG=zh_CN.GBK

[postgres@fnddb ~]$ psql db01 hippo

psql (9.4.1)

Type "help" for help.

db01=> show client_encoding;

GBK

db01=> show server_encoding;

UTF8

length函数

postgres=# select length('abc'),length('河马'),length('河马','UTF8'),length('河马','GBK');

3 | 2 | 2 | 3

length计算字符长度

length变种

db01=> select bit_length('abc'),char_length('abc'),octet_length('abc');

24 | 3 | 3

db01=> select bit_length('河马'),char_length('河马'),octet_length('河马');

48 | 2 | 6

octet_length 是字节长度

这里的字符长度是2,使用的服务器编码UTF8

大小写转换

db01=> select lower('aBc'),upper('aBc'),initcap('i am HIPPO');

abc | ABC | I Am Hippo

initcap 首字母大写

字符串定位与替换

字符串定位

db01=> select position('x' in 'bbbxcccxddd'),strpos('bbbxcccxddd','x');

4 | 4

两种函数,参数方向相反

pg中很多函数使用关键字而不是逗号来区分参数

字符串替换overlay

db01=> select overlay('aaa1111bbb' placing 'XXXX' from 4 for 3);

aaaXXXX1bbb

字符串替换replace

db01=> select replace('abacadaeaf','a','|');

|b|c|d|e|f

字符串替换translate

db01=> select translate('abcdef','adc','123'),translate('abcdef','adc','1'),translate('abcdef','ad','1234');

1b32ef | 1bef | 1bc2ef

被替换字符与替换字符一一对应,如果替换字符少了,用null代替.如果替换字符多了,则没用

字符串截取

还有个substr函数,使用逗号区分参数,不支持正则

db01=> select substr('aaa1111bbb',3,2);

a1

变种substr

db01=> select substring('aaa1111bbb' from 4 for 4),substring('aaa1111bbb' from '\d+'),substring('aaa1111bbb' from '\db{2}');

1111 | 1111 | 1bb

支持POSIX及SQL的正则表达式

left和right

db01=> select left('abcdef',2),left('abcdef',-2);

ab | abcd

db01=> select right('abcdef',2),right('abcdef',-2);

ef | cdef

split_part函数

db01=> select split_part('abc:bbc:ccc:ddd',':',3);

ccc

指定分隔符,获取某一段,感觉截取linux下密码文件很好用

未完待续......

//END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值