Greenplum常用函数
字符串函数
时间函数
数值计算函数
其他常用函数
1. 序列号生成函数 generate_series
2. 字符串列转行函数 string_agg
3.字符串行转列 regexp_split_to_table
4.hash函数 md5,hashbpchar
字符串函数
字符串拼接示例:
select ‘green’ || ‘plum’ as dbname;
————
grennplum
以 | 为分隔符,将字符串分割:
select split_part(col,’|’,1) , split_part(col,’|’,2)
from (values (‘hello|world’),(‘greenplum|database’)) t(col);
————
其中 Values 是 Greenplum 特有的语法,在这里可以将其看成一张表,表中有两行数据,表名为t,字段名为col,Values的用法如下:
values (‘hello|world!’),(‘greenplum|database’);
————
hello|world!
greenplum|database
获取字符串的第2个字符之后的3个字符:
select substr(‘hello world’,2,3);
————
ell
获取子串在字符串中的位置:
select position(‘world’ in ‘hello world’);
————
7
时间函数
时间加减:
- select ‘2011-10-01 10:0:0’::timestamp + interval ‘10 days 2 hours 10 seconds’;
2011-10-11 12:00:10
Interval 是一种表示时间间隔的一种数据类型。利用 interval 这种数据类型可以实现时间的加减,两个时间的时间差就是一个 interval 类型。获取当前时间:
- select now() , current_date, current_time, current_timestamp;
获取当月的天:
- select date_trunc(‘months’,now())::date;
2012-01-01
获取当前时间距离 2011-10-10 10:10:10 过了多少秒:
- select extract (epoch from now() - ‘2011-10-10 10:10:10’);
8403301.725044
数值计算函数
其他常用函数
1. 序列号生成函数 generate_series
该函数生成多行数据,从一个数字(start)到另外一个数字(end)按照一定的间隔,默认是1,生成一个结果集,具体的使用方法如下:
select * from generate_series(6,10);
————
6
7
8
9
10
我们可以很方便地使用这个函数来创建一些测试表的数据:
create tabke test_gen as select generate_series(1,10000) as id , ‘hello’ :: text as name distributed by (id);
我们还可以用 generate_series来做一些数值计算,比如,计算1~2000之建所有的奇数之和:
select sum(num) from generate_series(1,2000,2) num;
————
1000000
2. 字符串列转行函数 string_agg
有时候我们需要讲一个列的字符串按照某个分隔符将其拼接起来:
select * from test_string;
————
要按照id字段将字符串拼接起来,可以像下面这样使用string_agg来实现:
select id,string_agg(str,’|’) from test_string group by id;
————
我们还可以先按照某一个字段做排序,再做拼接:
select id,string_agg(str,’|’,order by str) from test_string group by id;
————
3.字符串行转列 regexp_split_to_table
把拼好的字符串重新拆分
select * from test_string2;
————
select id,regexp_split_to_table(str,E’\|’) str from test_string2;
4.hash函数 md5,hashbpchar
md5 的 hash算法的精-确度是128位,返回值是一个字符串
select md5(‘helloworld’);
————
Hashbpchar 的精-确度是32位的,返回值是一个 integer 类型
select hashbpchar(‘helloworld’);
————
252807993
本文来源:https://blog.csdn.net/weixin_51184877/article/details/117259052