impala和mysql对比_Oracle/Hive/ImpalaSQL三者对比讲解

5 Function 指数据库内置的function,不讨论UDF。另外,操作符都不比较了,区别不大。

5.1 数学函数

功能

Hive

Impala

ABS

绝对值,有

SIN/SINH/ASIN/COS/COSH/ACOS/TAN/TANH/ATAN/ATAN2

三角函数其中ATAN2接受两个参数(二维平面中的坐标)

没有SINH/COSH/TANH/ATAN2

同hive

BITAND

按位与,有

CEIL

天花板值,有

有,还有个别名CEILING

有,同hive

EXP

e的多少次,有

有,还有个函数E()返回e

有,同hive

FLOOR

地板值,有

LN

以e为底的log,有

LOG

以某个double为底的log,有

有,还有两个特殊底的log:LOG2和LOG10

有,同hive

MOD

Oracle的MOD的计算方式为MOD(n2,n1)=n2 - n1 * FLOOR(n2/n1),这与经典取模还不同,比如Oracle的MOD(-11,4)=-3,但经典取模等于1

在hive里取模用PMOD,返回值一定是个正数,比如PMOD(-11,4)=1。但这与经典取模还是不同,比如PMOD(-11,-4)=1,但经典取模等于-3

Impala的PMOD和hive的PMOD相同,另外Impala还有个FMOD和Oracle的MOD相同

POWER

求幂,有

有,还有个别名POW

有,同hive

REMAINDER

取余,REMAINDER(n2,n1)=n2 - n1 * FLOOR(n2/n1)

ROUND

舍入,支持1个参数和2个参数两种版本

有另外还有一个BROUND,使用HALF_EVEN舍入模式,见官方手册

有,同Oracle

SIGN

符号函数,有

SQRT

开方,有

TRUNC

截取数值的小数点后多少位(如果是负值则往前推)

DEGREES/RADIANS

角度/弧度互转

同hive

POSITIVE/NEGATIVE

相当于在数值前加+/-号(因此没什么卵用)

同hive

PI

返回pi值

同hive

FACTORIAL

阶乘,1.2.0以后才有

CBRT

求立方根,1.2.0以后才有

SHIFTLEFT/SHIFTRIGHT/SHIFTRIGHTUNSIGNED

按位左移/右移/无符号右移

GREATEST/LEAST

返回一串值中的最大/最小值,这串值的类型可以是任意,只要可比较大小(所以其实不是数学函数而是通用比较)

有,1.1.0以后

5.2 字符(串)函数

功能

Oracle

Hive

Impala

ASCII

输入必须char,返回该字符的ascii数值

输入String,返回该String第一个字符的ascii数值

同hive

BASE64 / UNBASE64

将二进制值转为base64的String(UN则是反向)

CONCAT

CONCAT(char1, char2)char或char2均可为CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB, or NCLOB之一

concat(string|binary A, string|binary B...)可以有多个参数另外提供CONCAT_WS用于指定特殊分隔符的连接

同hive(除了不支持binary类型),且也有CONCAT_WS

DECODE/ENCODE

string decode(binary bin, string charset)binary encode(string src, string charset)编码和解码用的,用于支持hive特有的binary类型

(其实oracle和impala也有DECODE,但作用完全不同,见条件函数中的DECODE)

FIND_IN_SET

find_in_set(string str, string strList)strList是用’,’分割的一组string,该函数将寻找strList中第一个精确匹配的str

同hive

FORMAT_NUMBER

将数字格式化为string

GET_JSON_OBJECT

抽取JSON对象,不常用

IN_FILE

in_file(string str, string filename)检测str是否为filename对应文件中的某行,不常用

INITCAP

将每个单词(以空白分隔)转换为首字母大写其余小写的形式

同oracle,1.1.0开始有

同oracle

INSTR

{ INSTR| INSTRB| INSTRC| INSTR2| INSTR4}(string , substring [, position [, occurrence ] ])搜索子串,不同数据类型调用名不同,最多可带四个参数,其中第三个是开始位置,第四个是出现的第几次

instr(string str, string substr)只接受两个参数

同hive

LENGTH

{ LENGTH| LENGTHB| LENGTHC| LENGTH2| LENGTH4}(char)串长,不同数据类型调用名不同

有(仅LENGTH)

同hive

LEVENSHTEIN

返回两个串的Levenshtein距离(编辑距离)1.2.0后才有

LOCATE

特殊情况的INSTR,可以指定匹配的开始位置。Oracle因为本来INSTR就支持所以并不需要该函数

同hive

LOWER

转小

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值