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;