标准函数与数据库对照表

阅读(666) 标签: 函数对照表,

DQL元数据层会把标准函数按照下面的对照表,翻译成相应的数据库函数,对于非标准函数(即不认识的函数)或者关键词(如TOP/BOTTOM等),DQL元数据层会原样保留。

 

字符串函数

标准函数

含义

oracle

sql server

db2

impala

LOWER(str)

转成小写

 

 

 

LOWER(str)

UPPER(str)

转成大写

 

 

 

UPPER(str)

LTRIM(str)

删除前导空白

 

 

 

LTRIM(str)

RTRIM(str)

删除后缀空白

 

 

 

RTRIM(str)

TRIM(str)

删除两端空白

TRIM(str)

LTRIM(RTRIM(str))

LTRIM(RTRIM(str))

TRIM(str)

SUBSTR(str,start,

len)
SUBSTR(str,start)

子串

SUBSTR(str,start,

len)
SUBSTR(str,start)

SUBSTRING(str,start,

len)
SUBSTRING(str,start,

len(str)-start+1)

SUBSTR(str,start,

len) SUBSTR(str,start)

SUBSTR(str,start,

len)

SUBSTR(str,start)

LEN(str)

串长

LENGTH(str)

LEN(str)

LENGTH(str)

LENGTH(str)

INDEXOF(sub,str

[,start])

子串的位置

INSTR(str,sub

[,start])

CHARINDEX(sub,str

[,start])

LOCATE(sub,str

[,start])

INDEXOF(sub,str

[,start])

LEFT(str,len)

str中最左边len个字符

SUBSTR(str,1,len)

LEFT(str,len)

LEFT(str,len)

 

STRLEFT(str,len)

RIGHT(str,len)

str中最右边len个字符

CASE WHEN len=0

THEN '' WHEN LENGTH(str)>len THEN SUBSTR(str,-len) ELSE str END

RIGHT(str,len)

RIGHT(str,len)

 

 

 

 

STRRIGHT(str,len)

CONCAT(str1,str2)

连接2个字符串

CONCAT(str1,str2)

str1+str2

CONCAT(str1,str2)

CONCAT(str1,str2)

CONCAT(str1,str2,

str3…)

连接多个字符串

str1||str2||str3…

str1+str2+str3+…

str1+str2+str3+…

str1||str2||str3…

REPLACE(str,sub,

rplc)

str中的sub替换成rplc

 

 

 

REPLACE(str,sub,

rplc)

 

日期时间函数

标准函数

含义

oracle

sql server

db2

impala

YEAR(d)

取年

EXTRACT(YEAR FROM d)

YEAR(d)

YEAR(d)

YEAR(d)

MONTH(d)

取月

EXTRACT(MONTH FROM d)

MONTH(d)

MONTH(d)

 

MONTH(d)

DAY(d)

取天

EXTRACT(DAY FROM d)

DAY(d)

DAY(d)

DAY(d)

HOUR(d)

取小时

EXTRACT(HOUR FROM d)

DATEPART(HH, d)

HOUR(d)

HOUR(d)

MINUTE(d)

取分钟

EXTRACT(MINUTE FROM d)

DATEPART(MI,d)

MINUTE(d)

 

 

MINUTE(d)

SECOND(d)

取秒

EXTRACT(SECOND FROM d)

DATEPART(SS,d)

SECOND(d)

 

SECOND(d)

QUARTER(d)

取季度

FLOOR((EXTRACT(MONTH

FROM d)+2)/3)

DATEPART(QQ,d)

QUARTER(d)

 

QUARTER(d)

TODAY()

今天

SYSDATE

GETDATE()
/CONVERT(DATETIME,CONVERT

(CHAR, GETDATE(),101),101)

//去掉时分秒

CURRENT DATE

 

 

 

TRUNC(NOW(),'dd')

NOW()

当前时间

SYSTIMESTAMP

GETDATE()/CURRENT_TIMESTAMP

CURRENT TIMESTAMP

 

NOW()

ADDYEARS(d,n)

增加年数

d+NUMTOYMINTERVAL

(n,'YEAR')

DATEADD(YY,n,d)

d+n YEARS

 

YEARS_ADD(d,n)

ADDMONTHS(d, n)

增加月数

d+NUMTOYMINTERVAL

(n,'MONTH')

DATEADD(MM,n,d)

d+n MONTHS

 

MONTHS_ADD(d,n)

ADDDAYS(d, n)

增加天数

d+NUMTODSINTERVAL

(n,'DAY')

DATEADD(DD,n,d)

d+n DAYS

 

DAYS_ADD(d,n)

ADDHOURS(d, n)

增加小时数

d+NUMTODSINTERVAL

(n,'HOUR')

DATEADD(HH,n,d)

d+n HOURS

 

HOURS_ADD(d,n)

ADDMINUTES(d,n)

增加分钟数

d+NUMTODSINTERVAL

(n,'MINUTE')

DATEADD(MI,n,d)

d+n MINUTES

 

YEARS_ADD(d,n)

ADDSECONDS(d,n)

增加秒数

d+NUMTODSINTERVAL

(n,'SECOND')

DATEADD(SS,n,d)

d+n SECONDS

 

YEARS_ADD(d,n)

DAYOFYEAR(d)

当年中第几天

TO_NUMBER

(TO_CHAR(d,'DDD'))

DATEPART(DY,d)

DAYOFYEAR(d)

 

DAYOFYEAR(d)

WEEKOFYEAR(d)

当年中第几星期

TO_NUMBER

(TO_CHAR(d,'WW'))

DATEPART(WW,d)

WEEK(d)

 

WEEKOFYEAR(d)

 

数值函数

标准函数

含义

oracle

sql server

db2

impala

ABS(x)

求绝对值

 

 

 

ABS(x)

ACOS(x)

求反余弦

 

 

 

ACOS(x)

ASIN(x)

求反正弦

 

 

 

ASIN(x)

ATAN(x)

求反正切

 

 

 

ATAN(x)

ATAN2(x,y)

求反正切

ATAN2(x,y)

ATN2(x,y)

ATAN2(x,y)

ATAN2(x,y)

CEIL(x)

求大于等于x的最小整数

CEIL(x)

CEILING(x)

CEIL(x)/CEILING(x)

 

CEIL(x)

COS(x)

求余弦

 

 

 

COS(x)

EXP(x)

ex次幂

 

 

 

EXP(x)

FLOOR(x)

求小于等于x的最大整数

 

 

 

 

FLOOR(x)

LN(x)

求自然对数

LN(x)

LOG(x)

LN(x)/LOG(x)

LN(x)

LOG10(x)

求以10为底的对数

LOG(10,x)

LOG10(x)

LOG10(x)

LOG10(x)

MOD(x,m)

xm

MOD(x,m)

x%m

MOD(x,m)

MOD(x,m)

POWER(x,y)

xy次幂

 

 

 

POWER(x,y)

ROUND(x,n)

四舍五入

 

 

 

ROUND(x,n)

SIGN(x)

求符号

 

 

 

SIGN(x)

SIN(x)

求正弦

 

 

 

SIN(x)

SQRT(x)

平方根

 

 

 

SQRT(x)

TAN(x)

正切

 

 

 

TAN(x)

TRUNC(x,n)

截断

TRUNC(x,n)

CONVERT(BIGINT,

x*POWER(10,n))

/POWER(10.0,n)
sqlserver2005

从后支持TRUNC(x,n)?

TRUNC(x,n)

 

 

 

CAST(x*POWER(10,n) AS BIGINT)/POWER(10.0,n)

RAND(seed)

随机数

DBMS_RANDOM.

VALUE(0, seed)

//返回0-seed之间的数

RAND(seed)//返回0-1之间的数

RAND(seed)//返回0-1之间的数

 

 

 

RAND(seed)

 

转换函数

标准函数

含义

oracle

sql server

db2

impala

ASCII(str)

串中最左边字符的ASCII

 

 

 

 

ASCII(str)

CHR(n)

asciin转换成一个字符

CHR(n)

CHAR(n)

CHR(n)

 

CHR(n)

INT(x)

字符串或数值转成整数

CAST(x AS INT)

CAST(x AS INT)

INT(x)

 

CAST(x as INT)

DECIMAL(x,len,

scale)

字符串或数值转成数值

CAST(x AS

DECIMAL(len,scale))

CAST(x AS DECIMAL(len,scale))

DECIMAL(x,len,scale)

CAST(x

as DECIMAL

(len,scale))

TIMESTAMP(str)

yyyy-mm-dd hh24:mi:ss格式串转换成日期

TO_DATE(str,'YYYY-MM-DD HH24:MI:SS')

CONVERT(DATETIME,

str,120)

TO_DATE(str,'YYYY-MM-DD HH24:MI:SS')

 

 

CAST(str

as TIMESTAMP)

NUMTOCHAR(d)

数值转成字符串

TO_CHAR(d)

CAST(d AS VARCHAR)

CHAR(d)

CAST(str

as STRING)

DATETOCHAR(date)

将日期转化成yyyy-mm-dd hh24:mi:ss格式串

TO_CHAR(date,'YYYY-MM-DD HH:MI:SS')

CONVERT(CHAR,date,120)

TO_CHAR(date,'YYYY-MM-DD HH:MI:SS')

 

 

CAST(data)

as STRING

CAST(x, y)

x转化为数据类型y(注:y不能使用?)

CAST(x as y)

CAST(x as y)

CAST(x as y)

 

CAST(x as y )

 

聚集函数

标准函数

含义

oracle

sql server

db2

impala

COUNT(x)

计数

 

 

 

COUNT(x)

COUNTD(x)

不同值的计数

COUNT(DISTINCT x)

COUNT(DISTINCT x)

COUNT(DISTINCT x)

 

COUNT(DISTINCT X)

COUNTBIG(x)

计数,超过max int

COUNT(x)

COUNT_BIG(x)

COUNT_BIG(x)

 

COUNT(x)

COUNTBIGD(x)

不同值的计数,超过max int

COUNT(DISTINCT x)

COUNT_BIG(DISTINCT x)

COUNT_BIG(DISTINCT x)

 

COUNT(DISTINCT X)

AVG(x)

平均

 

 

 

AVG(x)

AVGD(x)

不同值的平均

AVG(DISTINCT x)

AVG(DISTINCT x)

AVG(DISTINCT x)

AVG(DISTINCT X)

SUM(x)

求和

 

 

 

SUM(X)

SUMD(x)

不同值的求和

SUMD(DISTINCT x)

SUM(DISTINCT x)

SUM(DISTINCT x)

SUM(DISTINCT X)

MAX(x)

求最大值

 

 

 

MAX(x)

MIN(x)

求最小值

 

 

 

MIN(x)

COUNTIF(x1,

,xn)

条件计数

SUM(CASE WHEN x1 THEN 1 ELSE 0 END)

SUM(CASE WHEN x1 THEN 1 ELSE 0 END)

SUM(CASE WHEN x1 THEN 1 ELSE 0 END)

 

SUM(CASE WHEN X1 THEN 1 …ELSE 0 END)

 

其它

标准函数

含义

oracle

sql server

db2

impala

NULLIF(x1,x2)

x1=x2返回null,否则返回x1

 

 

 

 

 

NULLIF(x1,x2)

COALESCE(x1,…)

返回第一个非null的参数

 

 

 

 

COALESCE(x1,…)

CASE(when1,then1,

…[,else])

when=true则返回相应的then,否则返回else

CASE WHEN when1 THEN then1 ELSE else END

CASE WHEN when1 THEN then1 ELSE else END

CASE WHEN when1 THEN then1 ELSE else END

CASE WHEN when1 THEN then1 ELSE else END

DQL元数据层允许用户建立自己的标准函数库以及扩展对其他数据库的支持,通过配置工具,用户可以很容易做到这一点。