oracle各種語法操作的彙總第二部分
函數
1)單行函數:字符,數值,日期,轉換,通用
2)多行函數
字符函數:
(1)大小寫控制函數
upper
lower eg. select lower(user_name) from user
initcap
(2)字符控制函數:
a. concat(,) eg.select concat(first_name,last_name) from employees
b. substr(" ",a,b) a截取字符串的開始位置 爲0或1時都從第一位開始截取 b要截取的字符串的長度
eg.select substr('HelloWorld',0,3) value from dual; //返回結果:Hel,截取從“H”開始3個字符
c.length() eg.SELECT length('啦啦啦abc') FROM dual; 按字符計,漢字、英文、數字都是1個字符,故這裏返回6
d.instr("","")查找字符在字符串中的位置 eg.select instr('helloworld','l') from dual; 返回結果:3 默認第一次出現“l”的位置
e.lpad( string, padded_length, [ pad_string ] ) 左填充 eg.select lpad('abcde',10,'x') from dual; 返回結果:xxxxxabcde
f.rpad(string, padded_length, [ pad_string ]) 右填充
g.trim()不指定的時候去掉空格 指定的時候去掉指定的 eg.select trim(' aaa bbb ccc ') trim from dual; 返回結果aaa bbb ccc
數值
a)round 四捨五入
eg. select round(45.296,2) from dual; 返回結果:45.30
select round(-45.456,2) from dual;返回結果:-45.46
b)trunc 截取而不四捨五入 select trunc(45.296,2) from dual;返回結果:45.29
日期
a)sysdate
注意:日期-數字=日期
日期-日期=天數
b)MONTHS_BETWEEN eg.MONTHS_BETWEEN(date1,date2)
c)ADD_MONTHS eg.ADD_MONTHS(sysdate,-24*12)
d)NEXT_DAY 當前系統時間的下一星期一的時間select next_day(sysdate,1) from dual; 1是星期日 2是星期一
e)extract eg.select extract (year from sysdate) year, extract (month from sysdate) month, extract (day from sysdate) day from dual;
轉換函數:
TO_CHAR eg.select to_char(hiredate,yyyy-mm-'
TO_DATE eg.select to_char(hiredate,'yyyy'年'mm'月'dd'日)
TO_NUMBER 格式可添加標識符 fm:去零 9:數字 l:本地貨幣 eg.select to_number('$123.678','$999.9') from dual; 返回結果:123.6
通用
1)nvl(expr1,expr2)
eg. select name NVL(sal,0) from emp; 若sal爲空則用0代替
2)nvl2(expr1,expr2,expr3) eg.select NVL2(sal,0,100); 若sal爲空則用0代替 否則用100代替
3)decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) eg.select decode(job,'clerk','辦事員','salesman','銷售人員','其他');
case when then else end eg.select case YEAR when'2018' then 'lalala' else 'hahaha' end YEAR from temp_table;