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常用函数的主要内容,如果未能解决你的问题,请参考以下文章

21个常用代码片段

常用Javascript代码片段集锦

nodejs常用代码片段

JS常用代码片段-127个常用罗列-值得收藏

sql Oracle代码片段

oracle常用单行函数