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