博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL数据库切割和组合字段函数
阅读量:6762 次
发布时间:2019-06-26

本文共 3528 字,大约阅读时间需要 11 分钟。

  hot3.png

Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数

环境:PostgreSQL 9.1.2
     CENTOS 5.7 final

一.组合函数

1.concat
a.语法介绍

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 TABLEpostgres=# insert into t_kenyon values(1,'test','kenyon'),(2,'just','china'),(3,'iam','lovingU');INSERT 0 3postgres=# insert into t_kenyon values(4,'test',null);INSERT 0 1postgres=# insert into t_kenyon values(5,null,'adele');INSERT 0 1postgres=# 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.说明

concat函数纯粹是一个拼接函数,可以忽略null值拼接,拼接的值没有分隔符,如果需要分割符,则需要用下面的函数concat_ws。

2.concat_ws

a.语法介绍

concat_ws(sep text, 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=# select concat_ws(',',id,name,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('_',id,name,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('',id,name,remark) from t_kenyon;  concat_ws  ------------- 1testkenyon 2justchina 3iamlovingU 4test 5adele(5 rows)postgres=# select concat_ws('^_*',id,name,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分隔符还支持多个字符作为分隔符的,日常用得更多的可能是||。 

二、切割函数

1.split_part
a.语法介绍

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

a.语法介绍

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

a.语法介绍

regexp_split_to_array(string text, pattern text [, flags text ])Split string using a POSIX regular expression as the delimiter.

b.实际例子

postgres=# SELECT regexp_split_to_array('kenyon,love,,china,!',',');  regexp_split_to_array   -------------------------- {kenyon,love,"",china,!}(1 row)postgres=# SELECT regexp_split_to_array('kenyon,love,,china!','s*');             regexp_split_to_array             ----------------------------------------------- {k,e,n,y,o,n,",",l,o,v,e,",",",",c,h,i,n,a,!}(1 row)

c.说明

上面用到的flag里的s*表示split all,E'\s'表示转义空格

转载于:https://my.oschina.net/repine/blog/806421

你可能感兴趣的文章
Oracle函数
查看>>
【redis使用全解析】常见运维操作
查看>>
hdu2377Bus Pass(构建更复杂的图+spfa)
查看>>
2015第29周三
查看>>
CCBValue
查看>>
C#一些知识点:委托和事件的区别
查看>>
Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
查看>>
android开源项目学习
查看>>
提升Mac os x 10.10+xcode6.1之后,Cocoapods发生故障的解决方案
查看>>
标准API使用小技巧
查看>>
jQuery Validate插入 reomte使用详细的说明
查看>>
前端设计js+Tab切换可关闭+添加并自动判断是否已打开自动切换当前状态(转载)...
查看>>
for循环,如何结束多层for循环
查看>>
段树 基于单点更新 敌人阵容
查看>>
java中取得上下文路径的方法
查看>>
Tomcat通过配置一个虚拟路径管理web工程
查看>>
Spring、Hello Spring
查看>>
统计学常见分布、概念
查看>>
java的PrintStream(打印输出流)详解(java_io)
查看>>
Redis Keys 命令 - 查找所有符合给定模式( pattern)的 key
查看>>