Oracle单行函数

来源:互联网 发布:金锐盘开票软件 编辑:程序博客网 时间:2024/04/30 09:44
SQL> --字符函数SQL> select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写  2  from dual;转小写      转大写      首字母大写                                              ----------- ----------- -----------                                             hello world HELLO WORLD Hello World                                             SQL> --substr(a,b) 从a中,第b位开始取,取右边所有的字符SQL> select substr('Hello World',4) 截取结果 from dual;SQL> --substr(a,b,c) 从a中,第b位开始取,取c位SQL> select substr('Hello World',4,4)  from dual;SQL> --length 字符数 lengthb 字节数SQL> select length('Hello World中国') 字符数, lengthb('Hello World中国') 字节数  2  from dual;SQL> --instr 在母串中查找子串,找到返回下标(从1开始),否则返回0SQL> select instr('Hello World','ll')  from dual;INSTR('HELLOWORLD','LL')                                                        ------------------------                                                                               3                                                        SQL> --lpad 左填充  rpad 右填充SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右  2  from dual;左         右                                                                   ---------- ----------                                                           ******abcd abcd******    SQL> --trim 去掉前后指定的字符SQL> select trim('H' from 'Hello WorldH') from dual;TRIM('H'FR                                                                      ----------                                                                      ello World                                                                      SQL> select replace('Hello World','l','*') from dual;REPLACE('HE                                                                     -----------                                                                     He**o Wor*d                                     SQL> --数字函数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> 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 dualSQL> /        一         二         三         四         五                          ---------- ---------- ---------- ---------- ----------                               45.92       45.9         45         40          0      SQL>select MOD(1600,300) from dual;SQL> --日期函数SQL> select sysdate from dual;SYSDATE                                                                         --------------                                                                  22-10月-12                                                                      SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY                                                             -------------------                                                             2012-10-22 15:39:21                                                             SQL> select systimestamp from dual;SYSTIMESTAMP                                                                    ---------------------------------------------------------------------------     22-10月-12 03.40.05.406000 下午 +08:00  SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,'YY                                                             -------------------                                                             2012-10-22 15:40:33                                                             SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') from dual;TO_CHAR(SYSTIMESTAMP,'YYYY-MM                                                   -----------------------------                                                   2012-10-22 15:40:47*218000  SQL> --systimestamp时间戳SQL>---------------------------------------------------------------SQL> --昨天 今天  明天SQL> select (sysdate-1) 昨天, sysdate 今天, (sysdate+1) 明天 from dual;昨天           今天           明天                                              -------------- -------------- --------------                                    21-10月-12     22-10月-12     23-10月-12     SQL> --员工的工龄SQL> select ename,hiredate,(sysdate-hiredate) 天,(sysdate-hiredate)/7 星期,  2         (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年  3  from emp;ENAME      HIREDATE               天       星期         月         年           ---------- -------------- ---------- ---------- ---------- ----------           SMITH      17-12月-80     11632.6571 1661.80815 387.755235 31.8702933           ALLEN      20-2月 -81     11567.6571 1652.52244 385.588569 31.6922111           WARD       22-2月 -81     11565.6571 1652.23672 385.521902 31.6867317           JONES      02-4月 -81     11526.6571 1646.66529 384.221902 31.5798824           MARTIN     28-9月 -81     11347.6571 1621.09387 378.255235 31.0894714           BLAKE      01-5月 -81     11497.6571 1642.52244 383.255235 31.5004303           CLARK      09-6月 -81     11458.6571 1636.95101 381.955235  31.393581           SCOTT      13-7月 -87     9233.65706 1319.09387 307.788569 25.2976906           KING       17-11月-81     11297.6571 1613.95101 376.588569 30.9524851           TURNER     08-9月 -81     11367.6571 1623.95101 378.921902 31.1442659           ADAMS      13-7月 -87     9233.65706 1319.09387 307.788569 25.2976906           ENAME      HIREDATE               天       星期         月         年           ---------- -------------- ---------- ---------- ---------- ----------           JAMES      03-12月-81     11281.6571 1611.66529 376.055235 30.9086495           FORD       03-12月-81     11281.6571 1611.66529 376.055235 30.9086495           MILLER     23-1月 -82     11230.6571 1604.37958 374.355235 30.7689235           已选择14行。SQL> select hiredate+sysdate from emp;select hiredate+sysdate from emp               *第 1 行出现错误: ORA-00975: 不允许日期 + 日期 SQL>-- 时间不允许相加SQL> --last_day 某月的最后一天SQL> select last_day(sysdate) from dual;   SQL> --MONTHS_BETWEEN 计算工龄SQL> select (sysdate-hiredate)/30 一,MONTHS_BETWEEN(sysdate,hiredate) 二  2  from emp;        一         二                                                           ---------- ----------                                                           387.755329 382.182577                                                           385.588662 380.085802                                                           385.521996        380                                                           384.221996 378.666448                                                           378.255329 372.827738                                                           383.255329 377.698706                                                           381.955329 376.440641                                                           307.788662 303.311609                                                           376.588662 371.182577                                                           378.921996 373.472899                                                           307.788662 303.311609                                                                   一         二                                                           ---------- ----------                                                           376.055329 370.634189                                                           376.055329 370.634189                                                           374.355329 368.989028                                                           已选择14行。SQL> --114月后SQL> select add_months(sysdate,114) from dual;SQL> --从今天开始算(2012.10.22星期一),下一个星期一SQL> select next_day(sysdate,'星期一') from dual;NEXT_DAY(SYSDA                                                                  --------------                                                                  29-10月-12                                                                      SQL> --从今天开始算(2012.10.22星期一),下一个星期二SQL> select next_day(sysdate,'星期二') from dual;NEXT_DAY(SYSDA                                                                  --------------                                                                  23-10月-12    SQL> --对日期进行四舍五入SQL> select round(sysdate,'month') 一,round(sysdate,'year') 二 from dual;SQL> --数据类型转换SQL> --隐式转换的前提: 被转换对象是可以转换的SQL> --显式转换SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;SQL> --查询员工的薪水: 货币符号,两位小数,千位符SQL> select sal, to_char(sal,'L9,999.99') from emp;SQL> --通用函数SQL> --nvl2(a,b,c) 当a=null时,返回c,否则返回bSQL> select sal*12+nvl2(comm,comm,0)  from emp;SQL> --nullif(a,b) 当a=b时,返回null,否则返回aSQL> select nullif('abc','abc') from dual;SQL> --COALESCE 从左至右找到第一个不为null的值SQL> select comm,sal,COALESCE(comm,sal) from emp;

在SQL中使用if  then else 语句

SQL99-case语句

decode函数 oracle数据库特有的函数

SQL> --根据职位涨工资 总裁1000 经理800 其他400SQL> select ename,job,sal 涨前薪水, case job when 'PRESIDENT' then sal+1000  2                                          when 'MANAGER' then sal+800  3                                          else sal+400  4                                 end 涨后薪水  5  from emp;SQL> select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000,  2                                           'MANAGER', sal+800,  3                                                      sal+400)涨后薪水  4  from emp;



0 0
原创粉丝点击