资源描述
Greenplum,常用函数,Greenplum,函数,函数分类,字符函数,日期函数,数学函数,聚合函数,通用函数,自定义函数,日期操作符,oracle,内置函数,*内置函数,用户定义函数。,Greenplum,字符函数,1.Length(),获取字符串长度,中文、英文、数字均按,1,个字符计算,2.Lower(),将字符串中所有字母转换成小写,3.Upper(),将字符串中所有字母转换成大写,4.Trim(),将字符串前、后空格去掉。类似的:,Rtrim(),去右空格、,Ltrim(),去左空格,Greenplum,字符函数 续,5.Substr(str,pos,n),字符串截取函数,将,str,从,pos,的位置 开始截取,n,个字符,6.Strpos(str,str1),获取,str,中,str1,子串所在的起始位置,7.Replace(str,str1,str2),将,str,中所有包括,str1,的子串替换成,str2,Greenplum,日期,/,时间函数,1.Current_date,取当前日期,2.Current_time,取当前时间,3.Current_timestamp,取当前时间戳,同样也可以用,now(),获取到。,Greenplum,日期,/,时间函数 续一,4.Date(),将参数转换成日期格式,5.Extract(field from source),按,field,格式取出,source,中值,,field,常用取值有,year,month,day,hour,minute,doy,等,Greenplum,日期,/,时间函数 续二,6.To_date(str,format),将字符串按,format,指定的形式转换成日期类型,7.To_timestamp(str,format),将字符串按,format,指定的形式转换成时间戳,Greenplum,数学函数,1.abs(num),取绝对值,2.round(num,pos),对,num,进行四舍五入,保留,pos,位小数,3.floor(num),对,num,作向下取整,4.ceil(num),对,num,作向上取整,是,ceiling(),的别名函数,5.sign(num),取,num,的正负,Greenplum,数学函数 续,6.mod(num,n),求模函数,7.power(num,n),取,num,的,n,次方值,8.sqrt(num),取,num,的平均根,9.random(),获取一个,0-1,以内的随机数,Greenplum,聚合函数,1.sum(),求和函数,2.count()count(*),所有记录数,,count(expression),输入列非空记录数,3.max(),集合取最大值,4.min(),集合取最小值,5.avg(),集合取平均数,测试数据表,Greenplum,通用函数,1.coalesce(field,val),当,field,值为,null,时取,val,作默认值,要求,field,与,val,数据类型相同,2.length(),取长度函数,参数既可以是字符串也可以是整型等其他类型,Greenplum,通用函数 续,3.row_number()over(),排序,无重复序号,4.rank(),排序,有并列时,下个排名不连续,5.dense_rank(),排序,有并列时,下个排名连续,Greenplum,自定义函数,下面是一个没有参数也没有返回值的函数:,CREATE FUNCTION public.clean_customer(),RETURNS void AS DELETE FROM testsch.customer,WHERE state=NA;,LANGUAGE SQL;,在,select,语句中调用函数:,SELECT public.clean_customer();,clean_customer,-,(1 row),CREATE OR REPLACE FUNCTION public.to_number(number1 varchar)RETURNS decimal AS$,BEGIN,return cast(number1 as decimal);,END;,$LANGUAGE plpgsql immutable;,-兼容性重载,CREATE OR REPLACE FUNCTION public.to_number(number1 INTEGER)RETURNS decimal AS$,BEGIN,return cast(number1 as decimal);,END;,$LANGUAGE plpgsql immutable;,Greenplum,自定义函数 续,下面是一个返回值类型为,decimal,的用户定义函数及其重载方法:,Greenplum,函数编写规则,包括一组,SQL,语句,中间使用分号分隔,可以有查询语句,可以有,DML,语句,如,Insert,Update,Delete,可以没有,Rollback,Savepoint,Commit,等,命令,返回最后一个查询语句的结果集,如果返回类型不为空则最后必须是一个,select,语句,占用独立的事务,Greenplum,函数分类,SQL,语言函数,过程语言函数,(,如:,PL/pgSQL or PL/Tcl),内置,函数,*,C/Java,语言,函数,Greenplum,的,Function,根据编写语言的不同可以分为以下几类:,Greenplum,日期,/,时间操作符,操作符,例子,结果,+,date 2001-09-28+integer 7,date 2001-10-05,+,date 2001-09-28+interval 1 hour,timestamp 2001-09-28 01:00,+,date 2001-09-28+time 03:00,timestamp 2001-09-28 03:00,+,timestamp 2001-09-28 01:00+interval 23 hours,timestamp 2001-09-29 00:00,+,time 01:00+interval 3 hours,time 04:00,-,date 2001-10-01-date 2001-09-28,integer 3,-,date 2001-10-01-integer 7,date 2001-09-24,-,date 2001-09-28-interval 1 hour,timestamp 2001-09-27 23:00,-,time 05:00-time 03:00,interval 02:00,-,time 05:00-interval 2 hours,time 03:00,-,timestamp 2001-09-28 23:00-interval 23 hours,timestamp 2001-09-28 00:00,ORACLE,内置函数,ORACLE,内置函数,
展开阅读全文