原文链接:https://www.gbase.cn/community/post/3837
更多精彩内容尽在南大通用GBase技术社区。
GreenPlum支持的函数比较多,不仅支持常见的函数,例如数学函数、字符串函数、位串函数、时间/日期函数和聚集函数,页包含特殊的函数,例如网络地址函数、几何函数等。本节主要从以上几个方面介绍GreenPlum的函数迁移。
1.数学函数
1.1.ABS(X)
求参数的绝对值
GBase 替代:ABS
1.2.ACOS(X)
反余弦
GBase 替代:ACOS
1.3.ASIN(X)
反正弦
GBase 替代:ASIN
1.4.ATAN(X) ATAN2(Y,X)
反正切,Y/X的反正切
GBase 替代:ATAN, ATAN2
1.5.CBRT(X)
求参数的立方根
GBase 替代:无
1.6.CEIL(X) CEILING(X)
不小于参数的最小整数
GBase 替代:CEIL,CEILING
1.7.COS(X)
余弦
GBase 替代:COS
1.8.COT(X)
余切
GBase 替代:COT
1.9.DEGREES(X)
把弧度转为角度
GBase 替代:DEGREES
1.10.EXP(X)
自然指数
GBase 替代:EXP
1.11.FLOOR(X)
不大于参数的最大整数
GBase 替代:FLOOR
1.12.LN(X)
自然对数
GBase 替代:LN
1.13.LOG(X) LOG(B,X)
以10为底的对数, 以b为底的对数
GBase 替代:LOG
1.14.MOD(Y,X)
y/x的余数(模)
GBase 替代:MOD
1.15.PI()
π的值
GBase 替代:PI
1.16.POWER(A,B)
a的b次幂
GBase 替代:POWER
1.17.RADIANS(X)
把角度转为弧度
GBase 替代:RADIANS
1.18.ROUND(X)ROUND(X,D)
四舍五入到最接近的整数,对参数x进行四舍五入,小数点后保留d位
GBase 替代:ROUND
1.19.SIN(X)
正弦
GBase 替代:SIN
1.20.SIGN(X)
参数的符号(-1,0,+1)
GBase 替代:SIGN
1.21.SQRT(X)
平方根
GBase 替代:SQRT
1.22.TAN(X)
正切
GBase 替代:TAN
1.23.TRUNC(X)TRUNC(V,S)
截断,截断为s位小数
GBase 替代:TRUNC
1.24.DIV (y numeric, x numeric)
y/x的整数商
GBase 替代:无
1.25.RANDOM() 、SETSEED(X)
0.0 <= x < 1.0 范围内的随机值
GBase 替代:RAN()、RAN(N)
1.26.width_bucket(op numeric,b1 numeric,b2 numeric,count int)
返回将在具有计数bucket中的等深直方图中分配操作数的桶,范围为b1到b2
GBase 替代:无
2.日期/时间函数
2.1.AGE(TIMESTAMP) AGE(TIMESTAMP, TIMESTAMP)
减去参数后的符号化结果,使用年、月和天,如果仅提供一个参数则由当前时间减去参数
GBase 替代:无
2.2.CLOCK_ TIMESTAMP ()
实时时钟的当前时间戳
GBase 替代:无
2.3.CURRENT_DATE
当前的日期
GBase 替代:CURRENT_DATE
2.4.CURRENT_TIME
当前时间
GBase 替代:CURRENT_TIME
2.5.CURRENT_TIMESTAMP
当前事务开始时的时间戳
GBase 替代:CURRENT_TIMESTAMP
2.6.DATE_PART(TEXT,TIMESTAMP)DATE_PART(TEXT,INTERVAL)
获取子域
GBase 替代:EXTRACT
2.7.DATE_TRUNC(TEXT,TIMESTAMP)DATE_TRUNC(TEXT,INTERVAL)
截断成指定精度
GBase 替代:TRUNC(date/datetime[,format])
2.8.EXTRAL(FIELD FROM TIMESTAMP/INTERVAL)
获取子域
GBase 替代:EXTRAL
2.9.ISFINITE
测试是否为有穷日期,是否是有穷时间戳,是否是有穷时间间隔
GBase 替代:无
2.10.justify_days\hours\interval(interval)
调整间隔,以30天时间段表示为月,24小时表示为天
GBase 替代:无
2.11.LOCALTIME
当日时间
GBase 替代:LOCALTIME
2.12.LOCALTIMESTAMP
当日事务开始时的时间戳
GBase 替代:LOCALTIMESTAMP
2.13.MAKE_DATE(YEAR int,MONTH int,DAY int)
为年、月和日字段创建日期
GBase 替代:MAKE_DATE
2.14.MAKE_TIME(HOUR int,MIN int,SEC double precision)
从小时、分钟和秒字段中创建时间
GBase 替代:MAKE_TIME
2.15.make_interval、make_timestamp
从年、月、(周)、日、小时、分钟和秒字段创建间隔
GBase 替代:无
2.16.NOW()
当前事务开始时的时间戳
GBase 替代:NOW
2.17.TIMEOFDAY()、statement_timestamp()、transaction_timestamp()
实时时钟的当前时间戳
GBase 替代:无
3.聚合函数
GREENPLUM支持 17个聚合函数,其中11个可以被 GBase 替换。
可被GBase替换的聚合函数如下: AVG,COUNT,MAX,MIN,STDDEV,STDDEV_POP,STDDEV_SAMP,SUM,VAR_POP,VAR_SAMP,VARIANCE。
3.1.AVG
返回组中值的平均值。
语法:AVG( [ALL | DISTINCT] expr ) [ OVER ( analytic_clause ) ]
GBase 替换:AVG[DISTINCT/ALL] expr)OVER([PARTITION BY …] [ORDER BY … [ASC/DESC] ]
示例:
数据库 GREENPLUM GBase
语句 SELECT AVG(salary) "Average" FROM employees; SELECT AVG(salary) "Average" FROM employees;
结果 6461.68224299065 6461.6822429907
3.2.bit_and(expression)
所有非空输入值的按位与,如果没有则为空
GBase 替换: bit_and
3.3.bit_or(expression)
所有非空输入值的按位或,如果没有则为空
GBase 替换: bit_or
3.4.bool_and(expression)
如果所有输入值都为真,则为真,否则为假
GBase 替换: 无
3.5.bool_or(expression)
如果至少一个输入值为真,则为真,否则为假
GBase 替换: 无
3.6.CORR
返回一对表达式的相关系数,它是如下的缩写:
COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP(expr2))
从统计上讲,相关性是变量之间关联的强度,变量之间的关联意味着在某种程度上一个变量的值可由其它的值进行预测。通过返回一个-1~1之间的一个数, 相关系数给出了关联的强度,0表示不相关。
GBase 替换: corr
3.7.COUNT
对一组内发生的事情进行累积计数,如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数。
语法:COUNT( [ DISTINCT | ALL ] expr ) [ OVER ( analytic_clause )]
GBase 替换:COUNT(*/[DISTINCT] col ) OVER([PARTITION BY col_name1,col_name2,…] [ORDER BY col_name1 [ASC/DESC], col_name2 [ASC/DESC],…] )
示例:
数据库 GREENPLUM GBase
语句 SELECT COUNT(*) "Total" FROM employees; SELECT COUNT(*) Total FROM employees;
结果 107 107
3.8.COVAR_POP
返回一对表达式的总体协方差。它是下面这个公式的简写:(SUM(expr1 * expr2) - SUM(expr1) * SUM(expr2) / n) / (n-1)
语法:COVAR_POP( expr1 , expr2 ) [OVER ( analytic_clause ) ]
GBase 替换:无,可以使用数学函数按公式来计算。
3.9.COVAR_SAMP
返回一对表达式的样本协方差。它是下面这个公式的简写:(SUM(expr1 * expr2) - SUM(expr1) * SUM(expr2) / n) / (n-1)
语法:COVAR_SAMP( expr1 , expr2 ) [OVER ( analytic_clause ) ]
GBase 替换:无,可以使用数学函数按公式来计算。
3.10.cume_dist(args) WITHIN GROUP (ORDER BY sorted_args)
假设行的相对等级,范围从 1/ N到 1
GBase 替换:无,可以使用数学函数按公式来计算。
3.11.every(expression)
相当于bool_and
GBase 替换:无
3.12.json_agg(expression)
将值(包括空值)聚合为 JSON 数组
GBase 替换:无
3.13.json_object_agg(name, value)
将名称/值对聚合为 JSON 对象;值可以为空,但不能为名称
GBase 替换:无
3.14.MAX
在一个组中的数据窗口中查找表达式的最大值。
语法:MAX ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替换:MAX ( [ DISTINCT | ALL ] expr ),不支持分析函数部分。
示例:
数据库 GREENPLUM GBase
语句 SELECT MAX(salary) "Maximum" FROM employees; SELECT MAX(salary) "Maximum" FROM employees;
结果 24000 24000
3.15.MIN
在一个组中的数据窗口中查找表达式的最小值。
语法:MIN ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替换:MIN ( [ DISTINCT | ALL ] expr ),不支持分析函数部分。
示例:
数据库 GREENPLUM GBase
语句 SELECT MIN(salary) "Maximum" FROM employees; SELECT MIN(salary) "Maximum" FROM employees;
结果 2100 2100
3.16.mode() WITHIN GROUP (ORDER BY sort_expression)
返回最频繁的输入值(如果有多个相同频率的结果,则任意选择第一个)
GBase 替换:无
3.17.PERCENTILE_CONT
这个函数是一个反分布函数,它假设了一个连续分布模式。返回一个与输入的分布百分比值相对应的数据值,分布百分比的计算方法见函数PERCENT_RANK,如果没有正好对应的数据值,就通过下面算法来得到值:RN = 1+ (P*(N-1)) 其中P是输入的分布百分比值,N是组内的行数。
语法:
PERCENTILE_CONT ( expr ) WITHIN GROUP ( ORDER BY expr [ DESC | ASC ] )
[OVER ( query_partition_clause )]
GBase 替换:无
3.18.PERCENTILE_DISC
一个反分布函数,它假设了一个离散分布模式。返回一个与输入的分布百分比值相对应的数据值,分布百分比的计算方法见函数CUME_DIST,如果没有正好对应的数据值,就取大于该分布值的下一个值。
语法:
PERCENTILE_DISC ( expr ) WITHIN GROUP ( ORDER BY expr [ DESC | ASC ] )
[OVER ( query_partition_clause )]
GBase 替代:无
3.19.PERCENT_RANK
和CUME_DIST(累积分配)函数类似,对于一个组中给定的行来说,在计算那行的序号时,先减1,然后除以n-1(n为组中所有的行数)。该函数总是返回0~1(包括1)之间的数。
语法:
PERCENT_RANK ( expr [, expr]... ) WITHIN GROUP
( ORDER BY expr [ DESC | ASC ] [NULLS { FIRST | LAST }]
[, expr [ DESC | ASC ] [NULLS { FIRST | LAST }]]...)
GBase 替代:percent_rank(args) WITHIN GROUP (ORDER BY sorted_args)
3.20.rank(args) WITHIN GROUP (ORDER BY sorted_args)
假设行的排名,重复行有间隙
GBase 替代:rank()
3.21.dense_rank(args) WITHIN GROUP (ORDER BY sorted_args)
假设行的排名,重复行无间隙
GBase 替代:dense_rank
3.22.regr_组函数如:regr_avgx(Y, X)、regr_avgy(Y, X)、regr_count(Y, X)等
求因变量Y与自变量X的各种数学关系函数
GBase 替代:无
3.23.STDDEV
计算当前行关于组的标准偏离。(Standard Deviation),同于STDDEV_SAMP。
语法:STDDEV ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替代: STDDEV_SAMP ( [ DISTINCT | ALL ] expr ),不支持分析函数。需要根据公式组织SQL。
示例:
数据库 GREENPLUM GBase
语句 SELECT STDDEV(salary) "Deviation" FROM employees; SELECT STDDEV_SAMP(salary) "Deviation" FROM employees;
结果 3909.36574645906 3909.3657464591
3.24.STDDEV_POP
计算当前行关于组的总体标准偏离。(Standard Deviation-Population)
语法:STDDEV_POP ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替代: STDDEV ,STDDEV_POP ( [ DISTINCT | ALL ] expr ),不支持分析函数。
示例:
数据库 GREENPLUM GBase
语句 SELECT STDDEV_POP(salary) "Deviation" FROM employees; SELECT STDDEV_POP(salary) "Deviation" FROM employees;
结果 3891.05479920707 3891.0547992071
3.25.STDDEV_SAMP
计算当前行关于组的标准偏离。(Standard Deviation),同于STDDEV
语法:STDDEV_SAMP ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替代:STDDEV_ SAMP ( [ DISTINCT | ALL ] expr ),不支持分析函数。
示例:
数据库 GREENPLUM GBase
语句 SELECT STDDEV_SAMP(salary) "Deviation" FROM employees; SELECT STDDEV_ SAMP (salary) "Deviation" FROM employees;
结果 3909.36574645906 3909.3657464591
3.26.SUM
该函数计算组中表达式的累积和。
语法:SUM ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替换:SUM([DISTINCT/ALL] expr) OVER([PARTITION BY …] [ORDER BY … [ASC/DESC] ]
示例:
数据库 GREENPLUM GBase
语句 SELECT SUM(salary) "Total" FROM employees; SELECT SUM(salary) "Total" FROM employees;
结果 691400 691400
3.27.string_agg(expression, delimiter)
连接成字符串的非空输入值,由分隔符分隔
GBase 替代:无
3.28.VAR_POP
(Variance Population)该函数返回非空集合的总体变量(忽略null),VAR_POP进行如下计算:
(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)
语法:VAR_POP ( expr ) [OVER ( analytic_clause )]
GBase 替换:VARIANCE ,VAR_POP ( expr ) ,不支持分析函数。
示例:
数据库 GREENPLUM GBase
语句 SELECT VAR_POP(salary) FROM employees; SELECT VAR_POP(salary) FROM employees;
结果 15140307.4504324 15140307.450432
3.29.VAR_SAMP
(Variance Sample)该函数返回非空集合的样本变量(忽略null),VAR_ SAMP进行如下计算:
(SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr))/(COUNT(expr)-1)。
语法:VAR_SAMP ( expr ) [OVER ( analytic_clause )]
GBase 替换:VAR_SAMP ( expr ) ,不支持分析函数。
示例:
数据库 GREENPLUM GBase
语句 SELECT VAR_SAMP(salary) FROM employees; SELECT VAR_ SAMP (salary) FROM employees;
结果 15283140.5395874 15283140.539587
3.30.VARIANCE
该函数返回非空集合的样本变量,GREENPLUM计算该变量如下:如果表达式中行数为1,则返回0,如果表达式中行数大于1,则返回VAR_SAMP
语法:
VARIANCE ( [ DISTINCT | ALL ] expr ) [OVER ( analytic_clause )]
GBase 替换:VAR_ SAMP ( expr ) ,不支持分析函数。
示例:
数据库 GREENPLUM GBase
语句 SELECT VARIANCE(salary) FROM employees; SELECT VARIANCE(salary) FROM employees;
结果 15283140.5395874 15283140.539587
3.31.xmlagg(expression)
非空 XML 值的串联
GBase 替换:无
4.字符串函数
4.1.ASCII(STRING-EXPR)
返回字符串表达式中第一个字节的整数ASCII 值,如果字符串为空,则 ASCII 返回零。文字字符串必须用引号引起来。使用 integer-expression 的值作为 n,从其余参数的列表中返回第 n 个参数(从1 开始)。虽然表达式可以是任意数据类型,但它们必须属于相同的数据类型。整数表达式必须是从1 到列表中的表达式数目,否则返回NULL。多个表达式之间用逗号分隔。
GBase 替代:ASCII(STR)
4.2.BIT_LENGTH(STRING)
返回字符串 str 的比特长度,以比特进行计算。
GBase 替代:BIT_LENGTH(STR)
4.3.BTRIM(STRING TEXT [,CHARACTERS TEXT])
从string开头和结尾删除只包含 characters中字符(缺省是空白)的最长字符串。
GBase 替代:TRIM(STR)
4.4.CHR(INTEGER-EXPR)
返回含数字所表示的ASCII 值的字符,将会返回与所提供的数值表达式模256 相对应的当前数据库字符集中的字符。对于值大于255 或小于0 的整数表达式,CHAR 返回NULL。
GBase 替代:CHAR(N,...)
4.5.concat(str "any" [, str "any" [, ...] ])
连接所有参数的文本表示。NULL 参数被忽略。
GBase 替代:concat
4.6.concat_ws(sep text, str "any" [, str "any" [, ...] ])
用分隔符连接除第一个参数以外的所有参数。第一个参数用作分隔符字符串。NULL 参数被忽略。
GBase 替代:concat_ws
4.7.CHAR_LENGTH(STRING-EXPR)
返回字符串中的字符数。返回的长度中包括尾随空格字符。NULL 字符串的返回值为NULL。如果字符串在多字节字符集中,则 CHAR_LENGTH 值可能会小于BYTE_LENGTH 值。
GBase 替代:CHAR_LENGTH(STR),CHARACTER_LENGTH(STR)
4.8.CONVERT(STRING BYTEA, SRC_ENCODING NAME,DEST_ENCODING NAME)
把原来编码为src_encoding的字符串转换为 dest_encoding编码。 在这种编码格式中string必须是有效的。 用CREATE CONVERSION定义转换。
GBase 替代: CAST()/CONVERT(STRING USING STRENCODING)
4.9.DECODE(string text, format text)
把用string表示的文本里面的二进制数据解码。
GBase 替代:无
4.10.ENCODE(DATA BYTEA, FORMAT TEXT)
把二进制数据编码为文本表示。支持的格式有:base64, hex, escape。escape 转换零字节和高位设置字节为八进制序列(\nnn) 和双反斜杠。
GBase 替代:无
4.11.fromat( formatstr text [, formatarg "any" [, ...] ])
根据格式字符串格式化参数。此函数类似于 C 函数sprintf。
GBase 替代:无
4.12.INITCAP(STRING)
把每个单词的第一个字母转为大写,其它的保留小写。 单词是一系列字母数字组成的字符,用非字母数字分隔。
GBase 替代:无
4.13.left(str text, n int)
返回字符串中的前n 个字符。当n为负时,返回除最后n个字符所有字符。
GBase 替代:left(str text, n int)n<1时,返回为空
4.14.LENGTH(STRING-EXPR)
返回指定字符串中的字符数,如果字符串包含多字节字符,并且使用了适当的归类,则 LENGTH 返回字符数而不是字节数。如果字符串是 BINARY 数据类型,则 LENGTH 函数的行为与 BYTE_LENGTH 的行为相同。LENGTH 函数与 CHAR_LENGTH 函数相同。
GBase 替代: LENGTH(STR),返回字符串 str 的长度,以字节进行计算
4.15.LOWER(STRING-EXPR)
将字符串中的所有字符转换成小写形式。
GBase 替代:LOWER(STR),LCASE()
4.16.LPAD(STRING TEXT, LENGTH INT [, FILL TEXT])
通过填充字符fill(缺省时为空白), 把string填充为length长度。 如果string已经比length长则将其尾部截断。
GBase 替代:LPAD
4.17.LTRIM(STRING TEXT [, CHARACTERS TEXT])
从字符串string的开头删除只包含characters 中字符(缺省是一个空白)的最长的字符串。
GBase 替代:LTRIM,但是他只能去掉空格,而不能去掉指定的字符。
4.18.MD5(STRING)
计算string的MD5散列,以十六进制返回结果。
GBase 替代:MD5
4.19.OCTET_LENGTH(STRING)
返回字符串 str 的长度,以字节进行计算。
GBase 替代:LENGTH
4.20.OVERLAY(STRING PLACING STRING FROM INT [FOR INT])
把字符串string里的指定位置的内容替换成给定字符串
GBase 替代:无
4.21.PG_CLIENT_ENCODING ()
当前客户端编码名称
GBase 替代:无
4.22.POSITION(SUBSTRING IN STRING)
指定子字符串的位置
GBase 替代:locate(substring,string)
4.23.QUOTE_IDENT(STRING TEXT)
返回适用于SQL语句的标识符形式(使用适当的引号进行界定)。 只有在必要的时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符)。 嵌入的引号被恰当地写了双份。
GBase 替代:无
4.24.QUOTE_LITERAL(STRING TEXT)
返回适用于在SQL语句里当作文本使用的形式(使用适当的引号进行界定)。 嵌入的引号和反斜杠被恰当地写了双份。请注意,当输入是null时, quote_literal返回null;如果参数可能为null, 通常quote_nullable更适用。
GBase 替代:无
4.25.QUOTE_LITERAL(VALUE ANYELEMENT)
将给定的值强制转换为text,加上引号作为文本。嵌入的引号和反斜杠被恰当地写了双份。
GBase 替代:无
4.26.REGEXP_MATCHES(STRING TEXT, PATTERN TEXT [, FLAGS TEXT])
返回string中所有匹配POSIX正则表达式的子字符串。
GBase 替代:regexp_like(string text, pattern text [, flags text])
4.27.REGEXP_REPLACE(STRING TEXT, PATTERN TEXT, REPLACEMENT TEXT [, FLAGS TEXT])
替换匹配 POSIX 正则表达式的子字符串。
GBase 替代:regexp_replace(string text, pattern text, replacement text [, flags text])
4.28.REGEXP_SPLIT_TO_ARRAY(STRING TEXT, PATTERN TEXT [, FLAGS TEXT ])
用POSIX正则表达式作为分隔符,分隔string。
GBase 替代:无
4.29.REGEXP_SPLIT_TO_TABLE('HELLO WORLD', E'\\S+')
用POSIX正则表达式作为分隔符,分隔string。
GBase 替代:无
4.30.REPEAT(STRING TEXT, NUMBER INT)
将string重复number次
GBase 替代:REPEAT
4.31.REPLACE(STRING TEXT, FROM TEXT, TO TEXT)
把字符串string里出现地所有子字符串from 替换成子字符串to
GBase 替代:REPLACE
4.32.reverse(str)
返回反转字符串。
GBase 替代:reverse
4.33.right(str text, n int)
返回字符串中的后n 个字符。当n为负时,返回除最前n个字符所有字符。
GBase 替代:right(str text, n int)n<1时,返回为空
4.34.RPAD(STRING TEXT, LENGTH INT [, FILL TEXT])
使用填充字符fill(缺省时为空白), 把string填充到length长度。 如果string已经比length长则将其从尾部截断。
GBase 替代:RPAD
4.35.RPAD(STRING TEXT, LENGTH INT [, FILL TEXT])
使用填充字符fill(缺省时为空白), 把string填充到length长度。 如果string已经比length长则将其从尾部截断。
GBase 替代:RPAD
4.36.RTRIM(STRING TEXT [, CHARACTERS TEXT])
从字符串string的结尾删除只包含 characters中字符(缺省是个空白)的最长的字符串。
GBase 替代:RTRIM
4.37.SPLIT_PART(STRING TEXT, DELIMITER TEXT, FIELD INT)
根据delimiter分隔string 返回生成的第 field 个子字符串(1为基)。
GBase 替代:无
4.38.STRING || STRING,STRING || NON-STRING 或NON-STRING || STRING
连接两个字符串或带有一个非字符串输入的字符串连接
GBase 替代:CONCAT
4.39.STRPOS(STRING, SUBSTRING)
指定的子字符串的位置。
GBase 替代:INSTR
4.40.SUBSTR(STRING, FROM [, COUNT])
抽取子字符串。和substring(string from from for count))一样
GBase 替代:SUBSTR
4.41.SUBSTRING(STRING-EXPR, INTEGER-EXPR[, INTEGER-EXPR])
返回字符串的子字符串,如果指定了 length,则子字符串不应超过该长度。如果未指定长度,则从 start 位置开始返回字符串的其余部分。start 和 length 都可以是负数。使用适当的负数和正数组合,可以从字符串的开始处或结束处获取子字符串。
GBase 替代:SUBSTRING(STR,POS),SUBSTRING(STR FROM POS)
SUBSTRING(STR,POS,LEN),SUBSTRING(STR FROM POS FOR LEN)
4.42.TO_ASCII(STRING TEXT [, ENCODING TEXT])
把string从其它编码转换为ASCII (仅支持LATIN1, LATIN2, LATIN9, WIN1250编码)
GBase 替代:ASCII
4.43.TO_HEX(NUMBER INT OR BIGINT)
把number转换成十六进制表现形式
GBase 替代:HEX
4.44.TRANSLATE(STRING TEXT, FROM TEXT, TO TEXT)
把在string中包含的任何匹配from 中字符的字符转化为对应的在to中的字符。 如果from比to长, 删掉在from中出现的额外的字符。
GBase 替代:TRANSLATE
4.45.TRIM(STRING-EXPR)
删除字符串中的前导和尾随空白。
GBase 替代:TRIM([{BOTH | LEADING | TRAILING} [REMSTR] FROM] STR)
TRIM((REMSTR FROM) STR)
4.46.UPPER(STRING-EXPR)
将字符串中的所有字符转换成大写形式。结果数据类型为 LONG VARCHAR。
GBase 替代: ucase(str)
5.转换函数
5.1.to_char(timestamp, text)
将时间戳转换为字符串
GBase 替代:TO_CHAR(datetime,[FORMAT])
5.2.to_char(interval, text)
将区间转换为字符串
GBase 替代:无
5.3.to_char(int, text)
将整数转换为字符串
GBase 替代:TO_CHAR(number,[FORMAT])
5.4.to_char(double precision, text)
将实数/双精度转换为字符串
GBase 替代:CONVERT(expr,type)
5.5.to_char(numeric, text)
将数字转换为字符串
GBase 替代:CONVERT(expr,type)
5.6.to_date(text, text)
将字符串转换为日期
GBase 替代:CONVERT(expr,type)
5.7.to_number(text, text)
将字符串转换为数字
GBase 替代:CONVERT(expr,type)
5.8.to_timestamp(text, text)
将字符串转换为时间戳
GBase 替代:CAST(expr AS type)
5.9.to_timestamp(double precision)
将 Unix 纪元转换为时间戳
GBase 替代:CAST(expr AS type)
5.10.row_number()
其分区内的当前行数,从 1 开始计数
GBase 替代:ROW_NUMBER( )
6.窗口函数
6.1.rank()
当前行的排名有差距;row_number与其第一个同行相同
GBase 替代:rank()
6.2.dense_rank()
当前行的排名没有间隙;此功能计算对等组
GBase 替代:dense_rank()
6.3.percent_rank()
当前行的相对排名:( rank- 1) / (总行数 - 1)
GBase 替代:percent_rank()
6.4.cume_dist()
当前行的相对排名:(当前行之前或对等的行数)/(总行数)
GBase 替代:cume_dist()
6.5.ntile(num_buckets integer)
从 1 到参数值的整数,尽可能平均划分分区
GBase 替代:ntile(num_buckets integer)
6.6.lag(value anyelement [, offset integer [, default anyelement ]])
返回在分区内当前行之前的偏移行处计算的值;如果没有这样的行,则返回默认值(它必须与value的类型相同)。偏移量和默认值都相对于当前行进行评估。如果省略,偏移量默认为 1,默认为 null
GBase 替代:LAG(expr [,offset [,DEFAULT]] )
6.7.lead(value anyelement [, offset integer [, default anyelement ]])
返回在分区内当前行之后的偏移行处计算的值;如果没有这样的行,则返回默认值(它必须与value的类型相同)。偏移量和默认值都相对于当前行进行评估。如果省略,偏移量默认为 1,默认为 null
GBase 替代:LEAD(expr [,offset [,DEFAULT]] )
6.8.first_value(value any)
返回在作为窗口框架的第一行的行处计算的值
GBase 替代:first_value(value any)
6.9.last_value(value any)
返回在窗口框架的最后一行计算的值
GBase 替代:ast_value(value any)
6.10.nth_value(value any, nth integer)
返回在窗口框架的第 n 行计算的值(从1 开始计数);如果没有这样的行,则为 null
GBase 替代:nth_value(value any, nth integer)
7.GBase 8a暂不支持的函数
GBase 8a暂不支持的函数类型: