Oracle常用函数
Posted Mr.zhou_Zxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle常用函数相关的知识,希望对你有一定的参考价值。
Oracle常用函数
1.ASCALL
返回与对应字符串对应的十进制数
select ascaii(A),ascaii(a),ascaii(0),ascaii() from dual; 65 97 48 32
2.CHR
给出整数,返回对应的字符串
select chr(54740),chr(65) from dual 赵 A
3.CONCAT
连接字符串
select concat(010-,8888) from dual 010-8888
4.INITCAP
返回字符串并将字符串的第一个字母变为大写
select initcap(smith) from dual; Smith
5.INSTR
在一个字符串中搜索指定的字符,返回发现指定的字符的位置。
select instr(oracle traning,ra,1,2) from dual; 9
6.LENGTH
返回字符串的长度
select name,length(name),sal,length(to_char(sal)) from text; 周向宇 3 999.9 5
7.LOWER
将所有字符转成小写
select lower(AbcD) from dual; abcd
8.UPPER
将所有字符转成大写
select upper(AbcD) from dual; ABCD
9.SUBSTR
取字符串从第几个开始取,取几个
select substr(abcdefg,1,2) from dual; cdefg
10.REPLACE
替换字符串中的指定字符
select replace(abcd efd , ef, A) from dual abcd Ad
11.TRIM
12.ABS
取绝对值
select abs(-100) from dual 10
13.CEIL
返回大于或者等于给出数字的最小整数
selct ceil(2.232) from dual; 3
14.FLOOR
对于给定数字给整数
select floor(2.232) from dual; 2
15.SQRT
开根号
select sort(64) from dual; 8
16.ADD_MONTHS
增加或减去月份
-- 加上月份 select to_char(add_month(to_date(2021-10-21,yyyy-mm),2),yyyy-mm ) from dual; 2021-12 --减去月份 select to_char(add_month(to_date(2021-10-21,yyyy-mm),2),yyyy-mm) from dual; 2021-10
17.SYSDATE
sysdate和current_date效果一样
select sysdate from dual; select current_date from dual;
18.LAST_DAY
取当月的最后一天
SELECT LAST_DAY(SYSDATE) FROM dual; 2021-10-31 12:13:43
19.MONTHS_BETWEEN
取两个日期时间段之间有几个月
select months_between(TO_DATE('2021-10-21','yyyy-mm-dd') ,TO_DATE('2021-01-21','yyyy-mm-dd')) months from dual;
20.NEXT_DAY
设置当前时间,以及星期一,自动求出当前日期的下一个星期一
SELECT NEXT_DAY(SYSDATE ,'星期一') FROM dual; 2021-10-25 12:38:55
21.HEXTORAW
将一个十六机制构成的字符串转换为二进制
22.RAWTOHEXT
将一个二进制构成的字符串转换为十六进制
23.ROWIDTOCHAR
将ROWID数据类型转为字符类型
24.TO_CHAR
将时间按照指定格式转为char类型
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual; 2021-10-21 13:06:32
25.TO_DATE
将字符串转化为Oracle中的一个日期
select to_date(2021-10-21,yyyy-mm) from dual;
26.TO_NUMBER
转数字
select to_number(2021) from dual;
27.GREATEST
返回一组表达式的最大值,即比较字符的编码大小
select greatest(早,安,周) from dual;
28.LEAST
返回一组表达式的最小值,即比较字符的编码大小
select least(早,安,周) from dual;
29.USER
返回当前数据库的一个用户
SELECT USER FROM dual;
30.MAX(DISTINCT|ALL)
求最大值,ALL表示对所有值求最大值,DISTINCT对相同值去重
select max(distinct sal) from zxy;
31.MIN(DISTINCT|ALL)
求最小值,ALL表示对所有值求最小值,DISTINCT对相同值去重
select min(distinct sal) from zxy;
32.GROUP BY
主要用来对一组数进行统计
select deptno,count(*),sum(sal) from zxy group by deptno;
33.HAVING
对分组统计加限制条件
select deptno,count(*),sum(sal) from zxy group by deptno having count(*) >= 5;
34.ORDER BY
用于对查询到的结果进行排序输出
select deptno,ename,sal from zxy order by deptno,sal desc
35.CASE…WHEN…END
-- 方法一 select ( case when DUMMY='X' then 0 else 1 end) as flag from dual; -- 方法二 select ( case col when 'a' then 1 when 'b' then 2 else 0 end) from dual;
36.NVL
NVL(expr1,expr2) NVL(expr1,expr2)-> expr1为NULL,返回expr2;否则返回expr1.注意两者的类型要一致。 NVL2(expr1,expr2,expr3) -> expr1不为NULL,返回expr2.为NULL,返回expr3;expr2和expr3类型不同的情况下,expr3会转换为expr2的类型 NULLIF(expr1,expr2) -> 相等返回NULL,不等返回expr1
37.分析函数
row_number() over(partition by ... order by ...)
rank() over(partition by ... order by ...)
dense_rank() over(partition by ... order by ...)
count() over(partition by ... order by ...)
max() over(partition by ... order by ...)
min() over(partition by ... order by ...)
sum() over(partition by ... order by ...)
avg() over(partition by ... order by ...)
first_value() over(partition by ... order by ...)
last_value() over(partition by ... order by ...)
lag() over(partition by ... order by ...)
lead() over(partition by ... order by ...)
over(order by salary) 安装salary排序进行累计,order by是一个默认的开窗函数
over(partition by deptno) 按照部门分区
over(order by salary range between 50 preceding and 150 following)
--每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
over(order by salary rows between 50 preceding and 150 following)
--每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)
以上是关于Oracle常用函数的主要内容,如果未能解决你的问题,请参考以下文章