Oracle單行函式

2021-08-25 22:39:38 字數 3881 閱讀 2947

單行函式

sql> --字元函式

sql> --select lower('hello world') 小寫,upper('hello world') 大寫,initcap('hello world') 首字母大寫

2 from dual;

sql> --substr(a,b) 從a中,第b位開始取 substr(a,b,c) 直到第c位 b從1開始 b,c超出範圍不報錯

sql> select substr('hello',3) from dual;

subllo

sql> select substr('hello',3,9) from dual;

subllo

sql> --instr(『 『,』 『) 計數從一開始

sql> select instr('hello','lo') from dual;

instr('hello','lo')

sql> --length 字元數 lengthb 位元組數

sql> select length('hello world') 字元,lengthb('hello world') 位元組

2 from dual;

字元 位元組

11 11

sql> select length('北京') 字元,lengthb('北京') 位元組

2* from dual

字元 位元組

2 4sql> --lpad 左填充 rpad右填充

sql> -- abcd ---> 10位

sql> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右

2 from dual;

左 右******abcd abcd******

sql> select trim('h' from 'helhloh') from dual;

trim

elhlo

sql>select replace('hello world','l','*') from dual;

sql> --四捨五入 round(a)=round(a,0)

sql> select round(45.926,2) 一,round(45.926,1) 二,round(45.926,0) 三,

2 round(45.926,-1) 四,round(45.926,-2) 五

3 from dual;

一 二 三 四 五

45.93 45.9 46 50 0

sql> --截斷

sql> ed

已寫入 file afiedt.buf

1 select trunc(45.926,2) 一,trunc(45.926,1) 二,trunc(45.926,0) 三,

2 trunc(45.926,-1) 四,trunc(45.926,-2) 五

3* from dual

sql> /

一 二 三 四 五

45.92 45.9 45 40 0

sql> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

to_char(sysdate,'yy

2018-08-26 18:02:55

sql> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;

to_char(sysdate,'yyyy-mm-ddhh24:mi

2018-08-26 18:17:44今天是星期日

sql> --昨天 今天 明天

sql> select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天 from dual;

昨天 今天 明天

09-3月 -15 10-3月 -15 11-3月 -15

sql> --months_between

sql> select ename,hiredate,(sysdate-hiredate)/30 一,months_between(sysdate,hiredate) 二

2 from emp;

ename hiredate 一 二

smith 17-12月-80 416.720919 410.794437

allen 20-2月 -81 414.554252 408.697663

ward 22-2月 -81 414.487585 408.633147

sql> --78個月後-

sql> --add_months

sql> select add_months(sysdate,78) from dual;

add_months(sys

10-9月 -21

sql> --last_day 月的最後一天

sql> select last_day(sysdate) from dual;

sql> --下乙個星期二 格式需遵循 』周二『 』禮拜二『都錯誤

sql> select next_day(sysdate,'星期二') from dual;

next_day的應用:每個星期一自動備份資料

1. 分布式資料庫

2. 快照

sql> --對日期四捨五入

sql> select round(sysdate,'month'),round(sysdate,'year') from dual;

round(sysd round(sysd

2018-09-01 2019-01-01

通用函式

sql> -- 通用函式

sql> --nvl(a,b) 當a=null時候,返回b,否則返回a自身

sql>select nvl(comm,0) 獎金 from emp;

sql> --nvl2(a,b,c) 當a=null時候,返回c,否則返回b

sql> select sal*12+nvl2(comm,comm,0) from emp;

sql> --nullif(a,b) 當a=b時候,返回null,否則返回a

sql> select nullif('abc','abc') 值 from dual;

值sql> select nullif('abc','abcd') 值 from dual;

值abc

sql> --coalesce 從左到右找到第乙個不為null的值

sql> select comm,sal,coalesce(comm,sal) "第乙個不為null的值"

2 from emp;

comm sal 第乙個不為null的值

800 800

300 1600 300

500 1250 500

2975 2975

1400 1250 1400

2850 2850

sql> select ename,job,sal 漲前,

2 case job when 'president' then sal+1000

3 when 'manager' then sal+800

4 else sal+400

5 end 漲後

6 from emp;

ename job 漲前 漲後

smith clerk 800 1200

allen salesman 1600 2000

ward salesman 1250 1650

jones manager 2975 3775

sql> select ename,job,sal 漲前,

2 decode(job,'president',sal+1000,

3 'manager',sal+800,

4 sal+400) 漲後

5 from emp;

oracle單行函式

1.字元函式 upper 全大寫 lower 全小寫 initcap 首字母大寫 length 取長度 substr 擷取字串 replace 替換 2.數值函式 round 四捨五入 trunc 擷取 mod 取餘 3.日期函式 當前日期 sysdate 日期 數字 日期 日期 數字 日期 日期 ...

oracle單行函式

單行函式 函式類別 單行 返回單個結果 substr,length 多行 返回多個結果,any,all 單行的分類 字元類,日期類,數字類,轉換類,通用類 1.字元類 轉換大小寫 lower 轉換為小寫 select ename,lower ename from emp upper 轉換為大寫 se...

Oracle單行函式

單行函式 運算元據物件,接受引數返回乙個結果,只對一行進行變換,每行返回乙個結果,可以轉換資料型別,可以巢狀,引數可以是一列或乙個值 一 字元函式 concat 字串連線,相當於 initcap 將引數的第乙個字母變為大寫 lower 將引數轉換為全部小寫字母 upper 將引數轉換為全部大寫字母 ...