十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
都有函数,不用存储过程
创新互联公司成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、重庆APP开发公司、手机网站开发、微信网站制作、软件开发、成都服务器托管等实行标准化操作,让客户可以直观的预知到从创新互联公司可以获得的服务效果。
x的7次方: power(x,7)
x的3次开方: power(10,log(10,x)/3)
5 Function
指数据库内置的function,不讨论UDF。另外,操作符都不比较了,区别不大。
5.1 数学函数
功能 Oracle 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 转小写 有,且有一个别名叫LCASE 同hive
LPAD / RPAD
LPAD(expr1, n [, expr2 ])
在expr1之前用expr2填充n个字符,如expr2省略默认用n个单空格填充。RPAD类似只是在右边
有,但expr2不能省略 同hive
LTRIM / RTRIM
LTRIM(char [, set ])
去掉char左侧包含在set中的字符,如省略set,则只去除空格符。RTRIM类似只是在右边
有,但没有set参数,即只能去除空格符 同hive
oracle中的Function有两种,一种是系统内置的函数(直接拿来用就行),一种是自定义的(自己写的完成特定功能的)。function可以在DML语句中执行。如select upper('AaBbCcDd') '大写' from dual 其中upper就是系统自带的函数,是把参数中的字符串变成大写字符。
自定义函数的语句格式是:
create or replace function 函数名 return 返回值类型 is [声明部分]
begin 主体语句; return 结果; [exception 异常处理部分;] end;
调用:select 函数名 from dual;
或者像执行procedure一样调用也可以 begin 函数名; end;
1、首先在oracle中avg函数,使用聚合函数在计算平均值时,会报空值排除在外。
2、刚才在计算的时候结果是550,而comm列的总各为2200 所以计算平均时是只计算了除了空值的行。
3、需要注意的是,avg函数不能单独使用在where条件中不然会报如下错误。
4、如果想要查询出大于平均值的结果,需要使用group by ...having 子句。
5、然后用count函数用来统计列的总行数,就完成了。
rank是oracle分析函数中的一个,主要用法是
rank()over(partiton
by
XX
orader
by
ZZ
desc)(分组排序序号)
一般用来分组排序,与group
by
XX
order
by
ZZ
不同的是,它并不影响现有数据。
比如:
xx
zz
1
2
1
3
1
4
2
2
2
6
那么
select
xx,zz,rank()over(partiton
by
XX
orader
by
ZZ
)
aa
from
table的结果为
xx
zz
aa
1
2
1
1
3
2
1
4
3
2
2
1
2
6
2
partition
by可不写,这样就是全局排序,与order
by的排序结果相同,只是会存在序号
还有其他用法,而且还有很多分析函数,这个可以上网找找,oracle分析函数,里面的例子好多,希望对你有帮助。