Oracle單行函數(shù)(字符,數(shù)值,日期,轉(zhuǎn)換)
Oracle單行函數(shù)(字符,數(shù)值,日期,轉(zhuǎn)換)
1、字符函數(shù)接收字符輸入返回字符或者數(shù)值,dual 是偽表
1.1大小寫轉(zhuǎn)換函數(shù)
---1. 把小寫的字符轉(zhuǎn)換成大小的字符 select upper('yes') from dual; 結(jié)果:YES ---2. 把大寫字符變成小寫字符 select lower('YES') from dual; 結(jié)果:yes
1.2連接字符串X和concat(X,Y)
select CONCAT('abc','efg') from dual; 結(jié)果:abcefg
1.3ASCII碼與字符轉(zhuǎn)換
--ASCII(x)返回字符X 的ASCII碼 select ASCII('a') from dual; 結(jié)果:97 --CHR(x)接收一個ASCII碼 返回一個字符 select CHR(65) from dual; 結(jié)果:A
1.4返回字符串索引位置:instr(x,str)
索引從1開始
select INSTR('abcefg123','123') from dual; 結(jié)果:7
1.5返回字符串長度:length()
select LENGTH('abcefg123') from dual; 結(jié)果:9
1.6字符串替換:replace(X,old,new)
--REPLACE(X,old,new)在X中查找old,并替換成new select REPLACE('abc882388','88','666') from dual; 結(jié)果:abc66623666
1.6字符截取:substr(str,start,lenth)
--REPLACE(X,old,new)在X中查找old,并替換成new--返回X的字串,從start處開始,截取length個字符,缺省length,默認(rèn)到結(jié)尾select?SUBSTR('abcdefg', 4, length('abcdefg')) from dual;結(jié)果:defg
2、數(shù)值函數(shù)
2.1四舍五入函數(shù):round()
---1. 四舍五入函數(shù):ROUND() ---默認(rèn)情況下 ROUND 四舍五入取整,可以自己指定保留的位數(shù)。 ---保留位數(shù)為負(fù)數(shù),即往前保留幾位數(shù) select round(26.16 ) from dual; 結(jié)果:26 select round(26.16, 1) from dual; 結(jié)果:26.1 select round(26.16, -1) from dual; 結(jié)果:30 select round(26.16, -2) from dual; 結(jié)果:0 select round(56.16, -2) from dual; 結(jié)果:100
2.2直接截取函數(shù):trunc()
---直接截取,不在看后面位數(shù)的數(shù)字是否大于5. select trunc(56.56 ) from dual; 結(jié)果:56 select trunc(56.16, 1) from dual; 結(jié)果:56.1 select trunc(56.16, -1) from dual; 結(jié)果:50
2.3求余數(shù)函數(shù):mod()
---求余數(shù) select mod(10, 3) from dual; 結(jié)果:1
2.4取絕對值:abs()
select abs(-1) as a from dual; 結(jié)果:1
2.5大于x最近的整數(shù)值,或本身:ceil()
select CEIL(3.00001) as a from dual; ?結(jié)果:4
2.6小于x最近的整數(shù)值,或本身:floor()
select FLOOR(2.9999999) as a from dual; ? 結(jié)果:2
2.7X的Y次冪:power(X,Y)
select POWER(3,4) as a from dual; ?結(jié)果:81
3、日期函數(shù)
Oracle 中提供了很多和日期相關(guān)的函數(shù),包括日期的加減,在日期加減時有一些規(guī)律
日期 – 數(shù)字 = 日期
日期 + 數(shù)字 = 日期
日期 – + 日期 = 數(shù)字 (可直接加減,單位是天)
----查詢出emp表中所有員工入職距離現(xiàn)在幾天。 select sysdate-e.hiredate from emp e; 結(jié)果:以天為單位的小數(shù) ----算出明天此刻 select sysdate+1 from dual; 結(jié)果:2020/12/4 16:35:36 ----查詢出emp表中所有員工入職距離現(xiàn)在幾月。 select months_between(sysdate,e.hiredate) from emp e; 結(jié)果:以月為單位的小數(shù) ----查詢出emp表中所有員工入職距離現(xiàn)在幾年。 select months_between(sysdate,e.hiredate)/12 from emp e; 結(jié)果:以年為單位的小數(shù) ----查詢出emp表中所有員工入職距離現(xiàn)在幾周。 select round((sysdate-e.hiredate)/7) from emp e; 結(jié)果:以周為單位的小數(shù)
4、轉(zhuǎn)換函數(shù)
4.1日期轉(zhuǎn)字符串:to_char()
---日期轉(zhuǎn)字符串 select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual; 結(jié)果:2020-12-04 05:18:03 12小時有0 select to_char(sysdate, 'fm yyyy-mm-dd hh:mi:ss') from dual; 結(jié)果:2020-12-4 5:18:32 12小時無0 select to_char(sysdate, 'fm yyyy-mm-dd hh24:mi:ss') from dual; 結(jié)果: 2020-12-4 17:18:47 24小時無0
可以使用 TO_CHAR 函數(shù)來拆分年月日 select empno,ename to_char(hiredate,'yyyy') 年, to_char(hiredate,'mm') 月, to_char(hiredate,'dd') 日 from emp;
select empno,ename to_char(hiredate,'yyyy-mm-dd') 日 from emp;
to_char(number,‘L999,999.99’)
L代表貨幣符號,代表千位數(shù)分隔符.代表小數(shù)位分隔符
select to_char(123456.99,'L999,999.99') from dual; 結(jié)果: $123,456.99
4.2字符串轉(zhuǎn)日期:to_date()---字符串轉(zhuǎn)日期
select to_date('2020-12-4 17:18:47', 'fm yyyy-mm-dd hh24:mi:ss') from dual;
5、通用函數(shù):nvl()
---算出emp表中所有員工的年薪(獎金+12個月 月薪) select e.sal*12 from emp e; 結(jié)果:12個月 月薪 ---獎金里面有null值,如果null值和任意數(shù)字做算術(shù)運(yùn)算,結(jié)果都是null。 select e.sal*12+e.comm from emp e; 結(jié)果:有員工結(jié)果為空 ---如果 e.comm 為空,則正常相加;e.comm 為 null,則用 0取代 e.comm select e.sal*12+nvl(e.comm, 0) from emp e; 結(jié)果:正常查詢員工年薪
到此這篇關(guān)于Oracle單行函數(shù)(字符,數(shù)值,日期,轉(zhuǎn)換)的文章就介紹到這了,更多相關(guān)Oracle單行函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ORACLE中dbms_output.put_line輸出問題的解決過程
最近用dbms_output.put_line來輸出變量的一些信息,卻總是看不到結(jié)果,所以這篇文章主要給大家介紹了關(guān)于ORACLE中dbms_output.put_line輸出問題的解決過程,需要的朋友可以參考下2022-06-06Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計數(shù)據(jù)
我們經(jīng)常遇到一些需求,需要我們在sql語句中對日期進(jìn)行分類統(tǒng)計,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2024-03-03Oracle 12CR2查詢轉(zhuǎn)換教程之cursor-duration臨時表詳解
這篇文章主要給大家介紹了關(guān)于Oracle 12CR2查詢轉(zhuǎn)換教程之cursor-duration臨時表的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11Oracle通過sqlplus連接數(shù)據(jù)庫的方式
今天小編就為大家分享一篇關(guān)于Oracle通過sqlplus連接數(shù)據(jù)庫的方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12oracle drop table(表)數(shù)據(jù)恢復(fù)方法
drop table刪除表以后怎樣可以恢復(fù),本文整理了一些操作語句,感興趣的朋友可以研究下,或許可以幫助到你2013-04-04Oracle 表三種連接方式使用介紹(sql優(yōu)化)
這篇文章主要介紹了Oracle表三種連接方式的使用,學(xué)習(xí)sql優(yōu)化的朋友可以參考下2014-08-08從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法
今天小編就為大家分享一篇關(guān)于從Oracle數(shù)據(jù)庫中讀取數(shù)據(jù)自動生成INSERT語句的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04