Oracle常见系统函数
一、字符类函数
1,ASCII(c)和CHR(i)字符串和ascii码互转换
SQL> select ascii('Z') ,ascii('H'),ascii(' A') from dual;
ASCII('Z') ASCII('H') ASCII('A')
---------- ---------- ----------
90 72 32
SQL> select chr(90),chr(72),chr(65) from dual;
CH CH CH
-- -- --
Z H A
2.CONCAT(s1,s2)连接字符串
SQL> select concat('','')from dual;
C
-
SQL> select concat('hey','')from dual;
CONCAT
------
hey
SQL> select concat('','addie')from dual;
CONCAT('',
----------
addie
3.INITCAP首字母大写
SQL> select initcap('addie')from dual;
INITCAP('A
----------
Addie
4.INSTR(s1,s2[,i][,j])返回子字符串s2在s1中
SQL> select instr('helloinaddie','addie') from dual;
INSTR('HELLOINADDIE','ADDIE')
-----------------------------
8
5.LENGTH返回字符串长度
SQL> select length('helloaddie') from dual;
LENGTH('HELLOADDIE')
--------------------
10
6.LOWER和UPPER大小写转换
SQL> select lower('ADDIE'),upper('addie')from dual;
LOWER('ADD UPPER('ADD
---------- ----------
addie ADDIE
7.Itrim(s1,s2)、Rtrim(s1,s2)、Trim(s2 from s1)去除字符串左边、右边、两边的指定字符
SQL> select ltrim('***addie***','*'),rtrim('**addie*','*'),trim('*' from '******addie***')from dual;
LTRIM('***ADDIE* RTRIM('**ADDIE TRIM('*'FR
---------------- -------------- ----------
addie*** **addie addie
8.REPLACE(s1,s2[,s3])使用子
将s1中s2位置处的字符替换成字符串s3
SQL> select replace('helloimaddie','addie','allen')from dual;
REPLACE('HELLOIMADDIE','
------------------------
helloimallen
9.SUBSTR(s,i,[j])截取字符串
从字符串s中第i个字符开始截取j个长度的子字符串
SQL> select substr('helloeocoimaddiethisismyfirstexercise',10,15)from dual;
SUBSTR('HELLOEOCOIMADDIETHISIS
------------------------------
imaddiethisismy
二、数字类函数
1.ABS[n]返回n的绝对值
SQL> select abs(-9.1) from dual;
ABS(-9.1)
----------
9.1
2.ROUND(n1,n2)返回舍入小数点右边n2位的n1的值
n2的默认值为0 返回最接近的整数。如果n2为负数,则向小数点左边相应位数做舍入,n2必须是整数。
SQL> select round(3.1415926,3) from dual;
ROUND(3.1415926,3)
------------------
3.142
3.CELI(n)返回大于等于n的最小整数,FLOOR(n)则相反 返回小于等于n的最大整数
SQL> select ceil(9.1),floor(-7.1) from dual;
CEIL(9.1) FLOOR(-7.1)
---------- -----------
10 -8
4.MOD(n1,n2)返回n1除以n2的余数
SQL> select mod(9.3,3) from dual;
MOD(9.3,3)
----------
.3
5.ROUND(n1,n2)返回舍入小数点右边n2位的值,n2可以是负数 为负则小数点左边舍入
四舍五入
SQL> select round(13.1526789,3),round(13.1526789,-1) from dual;
ROUND(13.1526789,3) ROUND(13.1526789,-1)
------------------- --------------------
13.153 10
6.sign(n)判断n的正负
SQL> select sign(1),sign(0),sign(-9) from dual;
SIGN(1) SIGN(0) SIGN(-9)
---------- ---------- ----------
1 0 -1
7.TRUN(n1,n2)返回结尾到n2位小数的n1的值,可以为负数,必须为整数
仅截取,不做四舍五入
SQL> select trunc(3.14159,3),trunc(3.14159,-1),round(3.14159,3) from dual;
TRUNC(3.14159,3) TRUNC(3.14159,-1) ROUND(3.14159,3)
----------------- ----------------- ----------------
3.141 0 3.142
三、日期和时间类函数
1.ADD_MONTHS(date,n)返回date后n个月的date
SQL> select sysdate,add_months(sysdate,6) from dual;
SYSDATE ADD_MONTHS(SYS
-------------- --------------
19-3月 -25 19-9月 -25
2.LAST_DAY(date)返回date所在月份的最后一天
SQL> select last_day(sysdate) from dual;
LAST_DAY(SYSDA
--------------
31-3月 -25
3.MONTHS_BETWEEN(d1,d2)返回d1和d2之间相差的天数
4.NEW_TIME(d1,t1,t2)当时区t1中的日期和时间是d1时,返回时区t2中的日期和时间
5.SYSDATE()返回系统当前的日期
四、转换类函数
1.TO_CHAR(x[,format])将表达式转换为字符串
SQL> select sysdate,to_char(sysdate,'YYYY-MM-DD') from dual;
SYSDATE TO_CHAR(SYSDATE,'YYY
-------------- --------------------
19-3月 -25 2025-03-19
2.TO_DATE(s[,format[lan]])将字符串转换为date类型
SQL> select to_date('2025-09-19','YYYY-MM-DD') from dual;
TO_DATE('2025-
--------------
19-9月 -25
3.TO_NUMBER(s[,format[lan]])返回字符串s代表的数字
常用于进制转换
五、聚集类函数
1.AVG()计算选择列表项的平均值
SQL> select count(empno),avg(sal) from emp;
COUNT(EMPNO) AVG(SAL)
------------ ----------
10 2267.5