一、常用字符函数

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;



点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部