trunc() instr() substr()

 trunc():    截取的意思

    1、截取时间   最终的显示形式都是:年月日时分秒 2016-12-15 00:00:00

    select trunc(sysdate ,'yyyy') from dual ;今年第一天,零点

    select trunc(sysdate ,'yy') from dual ;   今年第一天,零点

    select trunc(sysdate ,'mm') from dual ;这个月第一天,零点

    select trunc(sysdate ,'dd') from dual ;今天,零点

    select trunc(sysdate ) from dual ;今天,零点

    select trunc(sysdate ,'d') from dual ;这个星期第一天,零点

    select trunc(sysdate ,'hh') from dual ;当前时间,精确到小时

    select trunc(sysdate ,'mi') from dual ;当前时间,精确到分钟

    2、截取数字

    trunc(a,b);   a:表示要操作的数     b:表示要保留的小数位数


如下给出一个例子


计算得到相差的天数


 instr():     一般有两种用法:

     1、从一个字符串中查找指定子串的位置

     select instr('abcdeab','a') position from dual; 

     显示结果为1 (说明是从1开始查找a的位置的)

     select instr('abcdeab','a',2) position from dual;

     显示结果为6  从第二个位置开始查找a

     select instr('abcdeab','b',2,2) position from dual;

     显示结果为7  从第二个位置开始查找第二次出现b的位置

     select instr('abcdeab','f') position from dual;

     显示结果为0  找f在字符串中的位置,如果找不到返回结果为0


    2、如下格式时有  like  的作用

    select * from tableA where instr(NAME,'张三')>0;

    等同于

    select * from tableA where name like '%张三%';

   --------------------------------------------------------------    

    select * from tableA where instr(NAME,'张三')=1;

    等同于

    select * from tableA where name like '张三%';

    ---------------------------------------------------------------

    select * from tableA where instr(NAME,'张三')=0;

    等同于

    select * from tableA where name not like '%张三%';

   ---------------------------------------------------------------

   select *  from tableA where instr('张三, 李四', name) > 0; 

   等同于 

   select *  from tableA where name like '%张三%' or name like '%李四%'; 


    3、instr()和like 两者效率问题

    简单的检索两者效率相当,复杂的检索instr()效率比like高,所以可以选择instr()函数来替换like使用



 substr():用来截取字符串

                   select substr('abcdeab',0,2 ) from dual;

         结果为:ab      表示从第一位开始截取2位,此处第一位也是从1开始

         select substr('abcdeab',1,2 ) from dual;

         结果为:ab      表示从第一位开始截取2位,此处第一位也是从1开始

         select substr('abcdeab',3,10 ) from dual;

         结果为:cdeab     从第三位开始截取,如果超出范围,那么到最后一位截止


nvl():判断是否为空

nvl(table.money, 0): 表示如果表中的money字段如果为空,则赋值为0,如果不为空则为本身的值






        
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值