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 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,'test',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.说明
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 
------------
(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
 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 
-----------------------
(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)

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

转自:https://my.oschina.net/Kenyon/blog/76819

Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数环境:PostgreSQL 9.1.2 CENTOS 5.7 final一.组合函数1.concata.语法介绍concat(str "any" [, str "any" [, ...]])Concatenate all but first arguments with separators...
适合学习和工作者的参考用书。 语言类型英 。 入门级别教程。 Post gre SQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。 Post gre SQL 开发者把它念作 post -gress-Q-L。 Post gre SQL 的 Slogan 是 "世界上最先进的开源关系型数据库"
string_agg,array_agg 这两个函数的功能大同小异,只不过合并数据的类型不同。 https://www. post gre sql .org/docs/9.6/static/functions-aggregate.htmlarray_agg(expression) 把表达式变成一个数组 一般配合 array_to_string() 函数 使用 string_agg(expression, de
1. post gre SQL 中没有现成的group_concat聚集函数 2. post gre SQL 可以自定义聚集函数一.首先我们要知道My SQL 中的group_concat聚集函数是干什么的? group_concat和group by一起 使用 group_concat函数返回一个字符串结果,该结果由分组中的值 连接 组合而成。例如:SELECT id, group_concat(city) fr
在日常工作中会遇到将多行的值 拼接 为一个值展现,如果 使用 过Oracle数据库,可以 使用 list_agg的聚合函数来实现。那么 Post gre SQL 也有这样的功能,函数为string_agg。具体用法如下: CREATE TABLE student( id serial PRIMARY KEY, name varchar(240), address varchar(500), grade varchar(20) 录入测试数据 INSERT INTO student(name,ad
SuggestGoodsRemarks = '', SinglePrice = IFNULL( SinglePrice, 0 ), TotalPrice = IFNULL( TotalPrice, 0 ), ResponseLog = CONCAT(
可以 使用 SELECT 语句来判断 字段 是否能插入值。举个例子,假设你有表 `my_table` 和 字段 `my_field`,你可以 使用 如下语句来判断 `my_field` 是否能插入值: SELECT column_default FROM information_schema.columns WHERE table_name = 'my_table' AND column_name = 'my_field'; 如果 查询 结果返回了一个非空的值,那么这个 字段 就不能插入值。 还有一种方法是 使用 `INSERT INTO ... ON CONFLICT DO NOTHING` 语句,这样如果插入冲突(例如 字段 已经有了一个非空的值),就不会插入新的值。