Oracle常见操作函数(字符、数学、日期、转换、聚合、单行、自定义)

一、常用字符函数

1.ASCII(X) : 返回字符X的ASCII码
select ASCII(‘A’) from DUAL;

2.CONCAT(X,Y) : 连接字符串X和Y
select CONCAT('Hello ',‘World’) FROM DUAL;

3.INSTR(X,STR[,START][,N) : 从X中查找str,返回位置(从1开始)可以指定从start开始,也可以指定从n开始
select INSTR(‘HelloWorld’,‘W’)FROM DUAL;

4.LENGTH(X) : 返回X的长度
select LENGTH(‘helloworld’)FROM DUAL;

5.LOWER(X) : X转换成小写
select LOWER(‘HELLOWORLD’) FROM DUAL;

6.UPPER(X) : X转换成大写
select upper(‘helloworld’) from dual;

7.LTRIM(X[,TRIM_STR]) : 把X的左边截去trim_str字符串,缺少截去空格
select LTRIM(’----hello----’,’-’) from dual;

8.RTRIM(X[,TRIM_STR]) : 把X的右边截去trim_str字符串,缺少截去空格
select rtrim(’----hello----’,’-’) from dual;

9.TRIM([TRIM_STR FROM]X) : 把X的两边截去trim_str字符串,缺少截去空格
select TRIM(’-‘FROM’----hello----’) FROM DUAL;

10.REPLACE(X,old,new) : 在X中查找old,并替换成new
select replace (‘hello,world’,’,’,’!’) from dual;

11.SUBSTR(X,start[,length]) : 返回X的字串,从start处开始,截取length个字符,缺少length,则默认到结尾
select SUBSTR(‘helloword’,6) from dual;
select SUBSTR(‘helloword’,6,1) from dual;

二、常用数学函数

1.ABS(X) : X的绝对值
select ABS(-115) from dual;

2.ACOS(X) : X的反余弦
select acos(1) from dual;

3.COS(X) : 余弦
select cos(1) from dual;

4.CEIL(X) : 大于或等于X的最小整数值
select ceil(0.3555)from dual;

5.FLOOR(X) : 小于或等于X的最大整数值
select FLOOR(5.1234) from dual ;

6.LOG(X,Y) : X为底Y的对数
select log (2,2) from dual;

7.MOD(X,Y) : X除以Y的余数
select mod(5,2) from dual;

8.POWER(X,Y) : X的Y次幂
select POWER(2,2) from dual;

9.SQRT(X) : 开X的平方根
select sqrt(9)from dual;

10.ROUND(X[,Y]) : X在小数点左/右第Y位,四舍五入
select round(2.26264) from dual;不指定Y,Y默认为0
select round(28732.2691021,-3) from dual;Y为负,左
select round(2.260389,4)from dual;Y为正,右

11.TRUNC(X[,Y]) : X在小数点左/右第Y位截断,直接截取
select TRUNC(2.26264) from dual;不指定Y,Y默认为0
select TRUNC(28732.2691021,-3) from dual;Y为负,左
select TRUNC(2.260389,4)from dual;Y为正,右

三、常用日期函数

1、ADD_MONTHS(d,n) : 在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期
SELECT SYSDATE,add_months(SYSDATE,12) FROM dual;

2、LAST_DAY(d) : 返回指定日期当月的最后一天
select SYSDATE,last_day(SYSDATE) from dual;

3、ROUND(d[,fmt]) : 返回一个以 fmt 为格式的四舍五入日期值, d 是日期, fmt 是格式,默认 fmt 为 DDD
–如果 fmt 为“YEAR”则舍入到某年的 1 月 1 日,即前半年舍去,后半年作为下一年
select ROUND(SYSDATE,‘year’)FROM dual;

–如果 fmt 为“MONTH”则舍入到某月的 1 日,即前月舍去,后半月作为下一月
select ROUND(SYSDATE,‘month’) FROM dual;

–默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天作为第二天
select ROUND(SYSDATE),ROUND(SYSDATE,‘DDD’) FROM dual;

–如果 fmt 为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下一周周日
select ROUND(SYSDATE,‘day’) FROM dual;

SELECT SYSDATE,ROUND(SYSDATE),ROUND(SYSDATE,‘DDD’),
ROUND(SYSDATE,‘day’),ROUND(SYSDATE,‘month’),ROUND(SYSDATE,‘year’)FROM dual;

4、TRUNC(d[,fmt]) : 与上相似,只是不对日期进行舍入,直接截取到对应格式的第一
SELECT SYSDATE,TRUNC(SYSDATE),TRUNC(SYSDATE,‘DDD’),
TRUNC(SYSDATE,‘day’),TRUNC(SYSDATE,‘month’),TRUNC(SYSDATE,‘year’)FROM dual;

5、EXTRACT(fmt FROM d) : 提取日期中的特定部分。

fmt 为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。其中 YEAR、MONTH、DAY可以为 DATE 类型匹配,也可以与 TIMESTAMP 类型匹配;但是 HOUR、MINUTE、SECOND 必须与 TIMESTAMP 类型匹配。
HOUR 匹配的结果中没有加上时区,因此在中国运行的结果小 8 小时。

SELECT SYSDATE "date",

       EXTRACT(YEAR FROM SYSDATE)"year",

       EXTRACT(MONTH FROM SYSDATE)"month",

       EXTRACT(DAY FROM SYSDATE)"day",

       EXTRACT(HOUR FROM SYSTIMESTAMP)"hour",

       EXTRACT(MINUTE FROM SYSTIMESTAMP)"minute",

       EXTRACT(SECOND FROM SYSTIMESTAMP)"second"

FROM dual;

四、常见转换函数

1、TO_CHAR(d|n[,fmt]) : 把日期和数字转换为制定格式的字符串。Fmt是格式化字符串
select to_char(SYSDATE,‘yyyy “年” MM “月” dd “日” hh24:mm:ss’)“date” from dual;
SELECT TO_CHAR(SYSDATE,‘YYYY “年” MM “月” DD “日” HH:MI:SS’)“date” FROM dual;

SELECT TO_CHAR(-123123.45,‘L9.9EEEEPR’)“num” FROM dual;对数字的处理

2、TO_DATE(X,[,fmt]) : 把一个字符串以fmt格式转换成一个日期类型
select to_date(‘2019年10月15日’,‘yyyy"年"MM"月"dd"日"’)“date” from dual;

3、TO_NUMBER(X,[,fmt]) : 把一个字符串以fmt格式转换为一个数字
SELECT TO_NUMBER(’-$12,345.67’,’$99,999.99’)“num” FROM dual;

五、常用聚合函数

1.COUNT(DISTINCT expr,[expr…]) : 数据统计
SELECT COUNT() FROM tb_student; 查询总条数
SELECT COUNT(
)FROM tb_exam e WHERE e.exam_score<60 ;查找成绩不及格的学生总数

2.SUM(expr) : 求和
SELECT SUM(e.exam_score) FROM tb_exam e;查询成绩表,所有学生的总成绩(累加)

3.MAX(expr) : 求最大值
SELECT MAX(e.exam_score) FROM tb_exam e;查找成绩最高分

4.MIN(expr) : 求最小值
SELECT MIN(s.stu_age) FROM tb_student s;查找最小的学生年龄

5.AVG([DISTINCT] expr) : 求平均数
SELECT AVG(e.exam_score) FROM tb_exam e;计算出所有学生的平均分

六、其他单行函数

1.NVL(X,VALUE) : 如果X为空,返回value,否则返回X
select nvl(exam_score,60) from tb_exam ;如果成绩为空,那就默认为60分

2.NVL2(x,value1,value2) : 如果x非空,返回value1,否则返回value2
select nvl2(exam_score,‘已考’,‘待考’) from tb_exam;

七、自定义函数

求和
create or replace function addition(num1 in number, num2 in number)
return number is
num3 number;
begin
num3 := num1 + num2;
return num3;
end;

select addition(1,1) from dual;

附:以上代码操作的数据库源文件(SNKIOD.sql)

发布了15 篇原创文章 · 获赞 11 · 访问量 957

猜你喜欢

转载自blog.csdn.net/qq_41414186/article/details/103024452