PostgreSQL数据库切割和组合字段函数
Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数 一.组合函数 concat(str "any" [,str "any" [,...]]) Concatenate all but first arguments with separators. The first parameter is used as a separator. NULL arguments are ignored. b.实际例子: postgres=# create table t_kenyon(id int,name varchar(10),remark text); CREATE TABLE postgres=# insert into t_kenyon values(1,'test','kenyon'),(2,'just','china'),(3,'iam','lovingU'); INSERT 0 3 postgres=# insert into t_kenyon values(4,null); INSERT 0 1 postgres=# insert into t_kenyon values(5,null,'adele'); INSERT 0 1 postgres=# select * from t_kenyon; id | name | remark ----+------+--------- 1 | test | kenyon 2 | just | china 3 | iam | lovingU 4 | test | 5 | | adele (5 rows) postgres=# select concat(id,name,remark) from t_kenyon; concat ------------- 1testkenyon 2justchina 3iamlovingU 4test 5adele (5 rows) c.说明 2.concat_ws concat_ws(sep text,...] ]) Concatenate all but first arguments with separators. The first parameter is used as a separator. NULL arguments are ignored. b.实际应用 postgres=# select concat_ws(',',id,remark) from t_kenyon; concat_ws --------------- 1,test,kenyon 2,just,china 3,iam,lovingU 4,test 5,adele (5 rows) postgres=# select concat_ws('_',remark) from t_kenyon; concat_ws --------------- 1_test_kenyon 2_just_china 3_iam_lovingU 4_test 5_adele (5 rows) postgres=# select concat_ws('',remark) from t_kenyon; concat_ws ------------- 1testkenyon 2justchina 3iamlovingU 4test 5adele (5 rows) postgres=# select concat_ws('^_*',remark) from t_kenyon; concat_ws ------------------- 1^_*test^_*kenyon 2^_*just^_*china 3^_*iam^_*lovingU 4^_*test 5^_*adele (5 rows) c.说明 concat_ws函数比concat函数多了分隔符的功能,其实就是concat的升级版,假如分隔符为'',则取出来的结果和concat是一样的。concat_ws分隔符还支持多个字符作为分隔符的,日常用得更多的可能是||。 二、切割函数 split_part(string text,delimiter text,field int) Split string on delimiter and return the given field (counting from one) b.实际例子 postgres=# select split_part('abc~@~def~@~ghi','~@~',2); split_part ------------ def (1 row) postgres=# select split_part('now|year|month','|',3); split_part ------------ month (1 row) c.说明 2.regexp_split_to_table regexp_split_to_table(string text,pattern text [,flags text]) Split string using a POSIX regular expression as the delimiter. b.使用例子 postgres=# SELECT regexp_split_to_table('kenyon,love,china,!','); regexp_split_to_table ----------------------- kenyon love china ! (5 rows) --按分割符切割 postgres=# SELECT regexp_split_to_table('kenyon,china loves',E's'); regexp_split_to_table ----------------------- kenyon,china loves (3 rows) --按字母切割 postgres=# SELECT regexp_split_to_table('kenyon,china',E's*'); regexp_split_to_table ----------------------- k e n y o n,c h i n a (13 rows) 3.regexp_split_to_array regexp_split_to_array(string text,flags text ]) Split string using a POSIX regular expression as the delimiter. b.实际例子 postgres=# SELECT regexp_split_to_array('kenyon,'); regexp_split_to_array -------------------------- {kenyon,"",!} (1 row) postgres=# SELECT regexp_split_to_array('kenyon,china!','s*'); regexp_split_to_array ----------------------------------------------- {k,e,n,y,o,",l,v,c,h,i,a,!} (1 row) c.说明 上面用到的flag里的s*表示split all,E's'表示转义空格 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |