zoukankan      html  css  js  c++  java
  • Oracle单行查询

    单行查询也叫作单行函数,使用某个函数对数据进行操作
     关于基本查询:oracle基本查询
      1 SQL> select lower('Hello WOrld') 转小写,
      2      upper('Hello WOrld') 转大写,
      3      initcap('hello world') 首字母大写
      4   2  from dual;
      5  
      6  
      7 SQL> --substr(a,b)取子串, 从a中,第b位开始取 ,直到末尾
      8 SQL> select substr('Hello World',3) 子串 from dual;
      9 SQL> --substr(a,b,c) 从a中,第b位开始取,取c位
     10 SQL> select substr('Hello World',3,4) 子串 from dual;
     11  
     12  
     13 SQL> --length 字符数  lengthb字节数
     14 SQL> select length('Hello World') 字符,lengthb('Hello World') 字节 from dual;
     15  
     16  
     17 SQL> --lpad 左填充  rpad 右填充
     18 SQL> -- abcd  填充成10位
     19 SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右 from dual;
     20 左         右                                                                                                                                        
     21 ---------- ----------                                                                                                                                 
     22 ******abcd abcd******
     23  
     24 SQL> --trim 去掉前后指定的字符
     25 SQL> select trim('H' from 'Hello WorldH') from dual;
     26  如果前面后者后面指定的字符有多个,那么也会都去掉比如:hhhello,会把h都去掉
     27  
     28 SQL> --replace 替换
     29 SQL> select replace('Hello WOrld','l','*') from dual;
     30 REPLACE('HE                                                                                                                                           
     31 -----------                                                                                                                                           
     32 He**o WOr*d
     33  
     34 SQL> --四舍五入 ,如果位数为负数,那么就会往前推,-1看个位保存到十位,-2看十位保存到百位
     35 SQL> select round(45.926,2) 一,
     36      round(45.926,1) 二,
     37      round(45.926,0) 三,
     38      round(45.926,-1) 四,
     39      round(45.926,-2) 五
     40      from dual;
     41  
     42         一         二         三         四         五                                                                                                
     43 ---------- ---------- ---------- ---------- ----------                                                                                                
     44      45.93       45.9         46         50          0   
     45  
     46 SQL> --截断 ,从位数后面直接截断,个位为0位
     47 SQL> select trunc(45.926,2) 一,
     48      trunc(45.926,1) 二,
     49      trunc(45.926,0) 三,
     50      trunc(45.926,-1) 四,
     51      trunc(45.926,-2) 五
     52   2* from dual
     53 SQL> /
     54  
     55         一         二         三         四         五                                                                                                
     56 ---------- ---------- ---------- ---------- ----------                                                                                                
     57      45.92       45.9         45         40          0   
     58  
     59 SQL> --当前时间
     60 SQL> select sysdate from dual;
     61 SQL> --格式化时间
     62 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
     63 时间可以进行运算,不允许相加
     64 SQL> select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天 from dual;
     65 昨天           今天           明天                                                                                                                  
     66 -------------- -------------- --------------                                                                                                          
     67 30-6月 -16     01-7月 -16     02-7月 -16
     68  
     69 SQL> --months_between 相差的月数 ,显示两个数据之间间隔的月份数量
     70 SQL> select ename,hiredate,(sysdate-hiredate)/30 一,
     71      months_between(sysdate,hiredate) 二
     72   2  from emp;
     73 通过上面的这条语句我们发现,单纯的/30是不准确的
     74  
     75 SQL> --add_months 月份进行计算操作,加上多少个月之后
     76 SQL> --53个月后
     77 SQL> select add_months(sysdate,53) from dual;
     78  
     79 SQL> --last_day 获取传入时间当月的最后一天
     80 SQL> select last_day(sysdate) from dual;
     81  
     82 SQL> --next_day 从传入日期开始下一个指定星期几 
     83 SQL> --下一个星期五
     84 SQL> select next_day(sysdate,'星期五') from dual;
     85 应用
     86 SQL> /*
     87 SQL> next_day的应用:每个星期一自动备份表中的数据
     88 SQL> 1. 分布式数据库
     89 SQL> 2. 触发器  快照
     90 SQL> */
     91 对日期进行四舍五入操作,默认当前时间为2016-07-01
     92 SQL> select round(sysdate,'month'),round(sysdate,'year') from dual;
     93 ROUND(SYSDATE, ROUND(SYSDATE,                                                                                                                         
     94 -------------- --------------                                                                                                                         
     95 01-7月 -16     01-1月 -17   
     96  
     97 将日期转换成字符,to_char(数据,format)
     98 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
     99 TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI                                                                                                                   
    100 ----------------------------------                                                                                                           
    101 2016-07-01 12:27:22今天是星期五  
    102  
    103 SQL> --查询员工薪水:两位小数,千位符,本地货币代码 L
    104 SQL> select to_char(sal,'L9,999.99') from emp;
    105 TO_CHAR(SAL,'L9,999                                                                                                                                   
    106 -------------------                                                                                                                                   
    107            ¥800.00
    108  
    109 SQL> --通用函数
    110  
    111 SQL> --nvl2(a,b,c) 当a=null的时候,返回c;否则返回b
    112      nvl(a,b)当a=null的时候,返回b;否则返回a
    113 SQL> select sal*12+nvl2(comm,comm,0) from emp;
    114  
    115 SQL> --nullif(a,b) 当a=b的时候,返回null;否则返回a
    116 SQL> select nullif('abc','abc') 值 from dual;
    117  
    118 SQL> --coalesce 从左到右 找到第一个不为null的值
    119 SQL> select comm,sal,coalesce(comm,sal) "第一个不为null的值" from emp;
    120  
    121 case when 的用法
    122  
    123 举例,涨工资:
    124  
    125 sql99的语法
    126 SQL> select empno,ename,job,sal 涨前,
    127   2         case job when 'PRESIDENT' then sal+1000
    128   3                  when 'MANAGER' then sal+800
    129   4                  else sal+400
    130   5          end 涨后
    131   6  from emp;
    132  
    133 sqlplus语法,decode语句
    134 SQL> select empno,ename,job,sal 涨前,
    135   2         decode(job,'PRESIDENT',sal+1000,
    136   3                    'MANAGER',sal+800,
    137   4                              sal+400) 涨后
    138   5  from emp;
     
     
     
     
  • 相关阅读:
    结巴分词 0.14 版发布,Python 中文分词库
    Lazarus 1.0.2 发布,Pascal 集成开发环境
    Android全屏 去除标题栏和状态栏
    服务器日志现 Android 4.2 传将添多项新特性
    Percona XtraBackup 2.0.3 发布
    长平狐 Android 强制设置横屏或竖屏 设置全屏
    NetBeans 7.3 Beta 发布,全新的 HTML5 支持
    CppDepend现在已经支持Linux
    GromJS 1.7.18 发布,服务器端的 JavaScript
    Apache OpenWebBeans 1.1.6 发布
  • 原文地址:https://www.cnblogs.com/anzhi/p/7515680.html
Copyright © 2011-2022 走看看