其他分享
首页 > 其他分享> > [ 知识点 ] Greenplum常用函数

[ 知识点 ] Greenplum常用函数

作者:互联网

Greenplum常用函数

字符串函数

函数返回类型描述例子结果
string || stringtext字符串连接‘Post’ || ‘greSQL’PostgreSQL
length(string)intstring 中字符串的数目length(‘jose’)4
position(substring in string)int指定的子字符串的位置position(‘om’ in ‘Thomas’)3
substring(string [from int] [for int])text抽取子字符串substring(‘Thomas’ from 2 for 3)hom
trim([leading | tailing | both] [characters] from string)text从字符串string的开头 / 结尾 / 两边删除只包含characters中字符串(默认是一个空白)的最长的字符串trim(both ‘x’ from ‘xTomxx’)Tom
lower(string)text把字符串转为小写lower(‘TOM’)tom
upper(string)text把字符串转为大写upper(‘tom’)TOM
overlay(string placing string from int [for int])text替换子字符串overlay(‘Txxxxas’ placing ‘hom’ from 2 for 4)Thomas
replace(string text,from text , to text)text把字符串string中出现的所有子字符串from替换成子字符串toreplace(‘abcdefabcdef’,‘cd’,‘XX’)abXXefabXXef
split_part(string text,delimiter text,field int)text根据delimiter分割string返回生成的第field个子字符串(1为基)split_part(‘abc|def|ghi’,’|’,2)def

字符串拼接示例:

以 | 为分隔符,将字符串分割:

其中 Values 是 Greenplum 特有的语法,在这里可以将其看成一张表,表中有两行数据,表名为t,字段名为col,Values的用法如下:

获取字符串的第2个字符之后的3个字符:

获取子串在字符串中的位置:


时间函数

函数返回类型描述例子结果
age(timestamp,timestamp)interval减去参数后的“符号化”结果age(timestamp ‘2001-04-01’, timestamp ‘1957-06-13’)43 years 9 mons 27 days
age(timestamp)interval从current_date减去参数后的结果age(timestamp ‘1957-06-13’)43 years 8 mons 3 days
current_datedate当前的日期
current_timetime with time zone当前时间
current_timestamptimestamp with time zone当前事务开始时的时间戳
date_part(text,timestamp)double precision获取子域(等效于extract)date_part(‘hour’,timestamp ‘2001-02-16 20:38:40’)20
date_trunc(text,timestamp)timestamp阶段成指定的精度date_trunc(‘hour’,timestamp ‘2001-02-16 20:38:40’)2001/2/16/20:00
extract(field from timestamp)double precision获取子域extract(hour from timestamp ‘2001-02-16 20:38:40’)20
now()timestamp witj time zone当前事务开始时的时间戳

时间加减:

Interval 是一种表示时间间隔的一种数据类型。利用 interval 这种数据类型可以实现时间的加减,两个时间的时间差就是一个 interval 类型。获取当前时间:

获取当月的第一天:

获取当前时间距离 2011-10-10 10:10:10 过了多少秒:


数值计算函数

函数返回类型描述例子结果
abs(x)(与x相同)绝对值abs(-17.4)17.4
ceil(dp 或 numeric)(与输入相同)不小于参数的最小的整数ceil(-42.8)-42
ceiling(dp 或 numeric)(与输入相同)不小于参数的最小整数(ceil 的别名)ceiling(-95.3)-95
exp(dp 或 numeric)(与输入相同)自然指数exp(1.0)2.718281828
ln(dp 或 numeric)(与输入相同)自然对数ln(2.0)0.693147181
log(dp 或 numeric)(与输入相同)以10为底的对数log(100.0)2
log(b numeric , x numeric)numeric以b为底数的对数log(2.0,64.0)6
mod(y,x)(与参数类型相同)y/x的余数(模)mod(9,4)1
pi()dp“π”常量pi()3.141592654
power(a numeric,b numeric)numerica 的 b次幂power(9.0,3.0)729
radians(dp)dp把角度转为弧度radians(45.0)0.785398163
random()dp0.0~1.0之间的随机数random()
floor(dp 或 numeric)(与输入相同)不大于参数的最大整数floor(-42.8)-43
round(v numeric, s int)numeric圆整为s位的小数round(42.4382,2)42.44
sign(dp 或 numeric)(与输入相同)参数的符号(-1,0,+1)sign(-8.4)-1
sqrt(dp 或 numeric)(与输入相同)平方根sqrt(4.0)2
cbrt(dp)dp立方根cbrt(27.0)3
trunc(v numeric,s int)numeric截断为s位小数trunc(42.4382)42.43

其他常用函数

1. 序列号生成函数 generate_series

该函数生成多行数据,从一个数字(start)到另外一个数字(end)按照一定的间隔,默认是1,生成一个结果集,具体的使用方法如下:

我们可以很方便地使用这个函数来创建一些测试表的数据:

我们还可以用 generate_series来做一些数值计算,比如,计算1~2000之建所有的奇数之和:

2. 字符串列转行函数 string_agg

有时候我们需要讲一个列的字符串按照某个分隔符将其拼接起来:

要按照id字段将字符串拼接起来,可以像下面这样使用string_agg来实现:

我们还可以先按照某一个字段做排序,再做拼接:

3.字符串行转列 regexp_split_to_table

把拼好的字符串重新拆分

4.hash函数 md5,hashbpchar

md5 的 hash算法的精确度是128位,返回值是一个字符串

Hashbpchar 的精确度是32位的,返回值是一个 integer 类型

标签:知识点,函数,10,timestamp,Greenplum,numeric,字符串,select,string
来源: https://blog.csdn.net/weixin_51184877/article/details/117259052