标签:销售 null 运算 cos 原创 其他 floor add date
想把单行函数进行一个比较全面的总结,并分享给有需要的人,有不明之处还请多多指教。
SQL函数:Oracle的内置函数,包括了单行函数和多行函数,本文重点讲解单行函数。单行函数又可以分为许多类,本人将常用的分为5大类:
字符函数(7个),数值函数(7个),日期函数(7个),转换函数(3个),通用函数(9个),下面开始分析。
select concat(‘milktea‘,‘leaf‘) from dual;
结果如图:
注意:concat函数不能处理2个以上的字符串拼接,否则会报参数个数无效的错误。
select concat(‘milktea‘,‘leaf‘,‘third‘) from dual;
select substr(‘milktealeaf‘,5,3) from dual;
结果如图:
注意:此处字符串的下标从1开始,index的值是几就是第几个。
另外还有一个substrb函数,和substr函数作用相同,但2者稍有差别:substr按字符取,而substrb按字节取。结论显而易见:
在取英文字母时,2者相同,但在取汉字时,一个汉字2个字节,如果是奇数个字节则自动舍弃最后一位,示例如下:
select substr(‘milktealeaf‘,2,5) from dual;
select substrb(‘milktealeaf‘,2,5) from dual;
select substr(‘李先森陈小姐你们好呀‘,2,5) from dual;
select substrb(‘李先森陈小姐你们好呀‘,2,5) from dual;
select instr(‘milkteatealeaftea‘,‘tea‘,3,2) from dual;
注:如图所示。第二个tea在下标为8处。
另外,也有一个instrb函数,同substr和substrb函数一样,instr用于字符,instrb用于字节,示例如下:
select instr(‘李先森陈女士李先森李先森陈女士‘,‘李先森‘,3,2) from dual;
select instrb(‘李先森陈女士李先森李先森陈女士‘,‘李先森‘,3,2) from dual;
select length(‘milktea‘) from dual
select lpad(‘leaf‘,9,‘%*‘) from dual;
注:从左侧开始填充,只要长度达到立即停止,不管要填充的字符串有没有填充完整。有了左填充,必然有右填充rpad,r即为right,从字符串右侧进行填充。示例如下:
select rpad(‘leaf‘,9,‘%*‘) from dual;
select replace(‘milkteathird‘,‘third‘,‘leaf‘) from dual;
select ltrim(‘ milktea leaf ‘) from dual;
可以看到左侧空白已经去除,那么同样的有rtrim函数,去掉右侧空白。去空白,那么当然左右2侧都去也可以,trim函数。示例如下:
select rtrim(‘ milktea leaf ‘) from dual;
select trim(‘ milktea leaf ‘) from dual;
select round(13.14,1) from dual;
select round(13.14,-1) from dual;
可以看出,当位数为正数时,保存小数点后面的位数,负数时直接取整数部分的四舍五入。
select trunc(15.15,1) from dual;
select trunc(15.15,-1) from dual;
并没有进行四舍五入,直接截取,毫不留情。
select mod(5,2) from dual;
select mod(3,0) from dual;
select ceil(13.14) from dual;
select floor(13.14) from dual;
select abs(-1314) from dual;
select cos(0) from dual;
select sysdate from dual;
select round(sysdate,‘day‘) from dual;
select round(sysdate,‘month‘) from dual;
select round(sysdate,‘year‘) from dual;
可以看到现在的时间过了周三,取最近的周日8月5日,按月份还没过16日,取每月1日,按年份已经过了7月1日,取下一年的1月1日。
select trunc(sysdate,‘day‘) from dual;
select trunc(sysdate,‘month‘) from dual;
select trunc(sysdate,‘year‘) from dual;
今天周六,取上周日7月29,按月份取本月1日,按年份取今年1月1日。
select add_months(sysdate,3) from dual;
select add_months(sysdate,-3) from dual;
select months_between(to_date(‘2018-8-4‘,‘YYYY-MM-DD‘),to_date(‘1949-10-1‘,‘YYYY-MM-DD‘)) from dual;
select next_day(sysdate,‘星期一‘) from dual;
select last_day(sysdate) from dual;
select to_char(sysdate,‘DD-MON-RR‘,‘NLS_DATE_LANGUAGE=AMERICAN‘) from dual;
select to_char(sysdate,‘YYYY"年"MM"月"DD"日"‘) from dual;
注意:如果格式中带有字符时,须将字符用双引号引起来。
select to_char(1314520,‘L99,999,99.99‘) from dual;
select to_date(‘1999-02-17‘,‘YYYY-MM-DD‘) from dual;
select to_number(‘$1314520‘,‘$999999999.99‘) from dual;
注意:此处format的作用限制了数的范围,当format里面的格式如果比字符串中的数字小的话,会报错,示例如下:
select to_number(‘$1314520‘,‘$99999.99‘) from dual;
select nvl(comm,000) from emp;
注意表达式2中值的类型须和原来字段的类型相同。
select nvl2(comm,comm,000) from emp;
select nullif(job,‘MANAGER‘) from emp;
select coalesce(comm,null,0) from emp;
select ename, case job when ‘CLERK‘ then ‘办事员‘ when ‘SALESMAN‘ then ‘销售‘ when ‘MANAGER‘ then ‘经理‘ when ‘ANALYST‘ then ‘分析员‘ else ‘总裁‘ end from emp
select ename,decode(job,‘CLERK‘,‘办事员‘,‘SALESMAN‘,‘销售‘,‘MANAGER‘,‘经理‘,‘ANALYST‘,‘分析员‘,‘总裁‘)from emp;
select sign(13),sign(0),sign(-14) from dual;
select ascii(‘a‘) from dual;
select chr(97) from dual;
到此为止,oracle的单行函数已全部总结完毕,有需要的童鞋可以进来看看,后续还会总结其他,等待up主更新~
2018-08-04 17:20:42
标签:销售 null 运算 cos 原创 其他 floor add date
原文地址:https://www.cnblogs.com/loveleaf/p/9417765.html