1. 程式人生 > >Oracle資料庫學習心得(二)

Oracle資料庫學習心得(二)

20、單行函式:每次執行函式,傳入一行列值,返回一個結果;多行函式:每次執行函式,傳入多行列值,返回一個結果 21、字元型函式: (1)大小寫轉換:lower(小寫)、upper(大寫)、initcap(首字母大寫) (2)拼接字串:concat,例 select concat(‘hello’,‘world’) from dual; (3)擷取字串:substr,擷取字串,資料庫的字串下標從1開始,例:

select substr('abcdefg',3) from dual;--cdefg
select substr('abcdefg',3,2) from dual;--cd
select substr('abcdefg',-3) from dual;--efg
select substr('abcdefg',-3,2) from dual;--ef

(4)字串長度:length,例:

select length('abcd') from dual;--4
select length('') from dual;--null

(5)查詢字串下標,找不到返回0:instr,例:

select instr('abcdefg','cd') from dual;--3
select instr('abcdefg','xxx') from dual;--0
select instr('abcdefgabcdefg','cd',4) from dual;--10,跳過前3個,從下標4開始查詢
select instr('abcdefgabcdefg','cd',-1) from dual;--負數表示反方向查詢
select instr('abcdefgabcdefg','cd',1,1) from dual;--查詢第n次出現的位置

(6)左填充:lpad;右填充:rpad。如果位數不足會填充,但是空值會返回null,例:

select lpad('abcd',7,'#') from dual;--###abcd
select rpad('abcd',7,'*') from dual;--abcd***
select lpad('',7,'#') from dual;--null

(7)修剪兩邊指定字元:trim,只能修剪兩邊,而不能修剪中間的值,例:

select trim('a' from 'aaabcdaaefgaa') from dual;--bcdaaefg
select trim('b' from 'aaabcdaaefgaa') from dual;--aaabcdaaefgaa

(8)替換字串:raplace,例:

select replace('abcdefgabcd','cd','#') from dual;--ab#efgab#

22、數字型函式: (1)取模運算:mod,例:

select mod(5,3) from dual;--2

(2)截斷:trunc,例:

select trunc(3.1415927) from dual;--3
select trunc(3.1415927,3) from dual;--3.141

(3)四捨五入:round,例:

select round(3.1415927,3) from dual;--3.142

(4)進位取整:ceil,例:

elect ceil(3.0001) from dual;--4

23、日期型函式: (1)當前系統時間:sysdate,例:

select sysdate from dual;--2018/10/13 18:25:06

(2)oracle中日期型別沒有常量這一說,預設日期字串格式dd-mon-rr,例:‘01-1月-18’ (3)兩個日期型別可以做加減法,返回兩個日期間隔天數 (4)求兩個日期間隔的月:months——between(第一個日期,第二個日期) (5)日期加減若干月,返回一個新的date型別資料:add_months(日期,加減的月[加是正數, 減是負數]) (6)返回指定日期下一個最近的星期幾的日期,1~7代表日到六:next_day(日期,星期幾/數字) (7)返回指定日期的最後一天:last_day(日期) (8)四捨五入日期:round(日期) (9)日期的截斷:trunc(日期) (10)數字和日期不能做任何的型別轉換 (11)把一個日期按照指定格式轉換為字串:to_char(日期,格式),例:

select '現在的時間是:'|| to_char(sysdate,'yyyy-mm-dd') from dual;
select '現在的時間是:'|| to_char(sysdate,'mm/dd/yyyy') from dual;
select '現在的時間是:'|| to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select '現在的時間是:'|| to_char(sysdate,'yyyy-mm-dd day') from dual;
select '現在的時間是:'|| to_char(sysdate,'yyyy-mm-dd d') from dual;--1~7代表日~六

(12)按照指定格式把字串解析為日期型別:to_date(字串,格式),例:

select to_date('2019-1-1','yyyy-mm-dd')-sysdate from dual;--79.221712962963

(13)字串轉換為數字:to_number,例:

select to_number('$8000','$9999') from dual;--8000

24、通用函式:可以操作任何型別,主要針對於空值 (1)nvl(引數1,引數2):引數1如果為空,則返回引數2,返回引數1,例:

select nvl(1,2) from dual;--1
select nvl(null,2) from dual;--2

(2)nvl2(引數1,引數2,引數3):引數1如果不為空,返回引數2,否則返回引數3,例:

select nvl2(1,2,3) from dual;--2
select nvl2(null,2,3) from dual;--3

(3)nullif(引數1,引數2):兩個引數相等,返回null,否則返回引數1,例:

select nullif(1,2) from dual;--1
select nullif(1,1) from dual;--2

(4)coalesce(引數1,引數2,……):返回第一個非空引數值,例:

select coalesce(1,2,3,4) from dual;--1
select coalesce(null,null,3,4) from dual;--3