• 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;
     
     
     
     
  • 相关阅读:
    C# Linq 类似Scala中的map的函数
    Spark DataFrame NOT IN实现方法
    Scala scopt 命令行解析
    WPF 绑定到静态属性,可通知
    WPF GroupBox Header居中
    WPF开源项目整理(排名不分先后)
    Windows 上配置 Go 的 gRPC 编译环境
    C++20新线程 jthread 体验代码
    查找被删除但仍然占据磁盘的文件
    以Docker方式安装Redis集群
  • 原文地址:https://www.cnblogs.com/anzhi/p/7515680.html
Copyright © 2020-2023  润新知