sign、decode、numtodsinterval、numtoyminterval、substr

在一次写sql语句的时候,无法达到想要的效果,最后用sign函数和decode函数解决了。在这个过程中简单的学习了一下这两个函数,并总结如下:

1.sign函数:

比较大小的函数:

函数语法

sign(n)

函数说明:

取数字的符号,大于0返回1,小于0返回-1,等于0返回0

可以用于两时间相减来比较大小。

2.decode函数

流程控制函数:

decode函数是Oracle PL/SQL的功能强大的函数之一,目前还只有Oracle公司的sql提供了此函数,其他数据库厂商的sql实现还没有此功能。

decode的语法:decode(value,if1,then1,if2,then2,if3,then3,....,else),表示如果value的值等于if1时,decode函数的结果返回对应的then1,......,如果不等于任何if值,则返回else。

3.numtodsinterval函数

numtodsinterval(x,c):

表明x的单位,这个函数把x转换为interval day to second数据类型

常用的单位有(‘day’,‘hour’,‘minute’,‘second’)。

                                       sql-------------------------------------------查询结果                                              ----描述

select numtodsinterval(1,'day')  from dual----------------   +000000001 00:00:00.000000000   ---------1天

select numtodsinterval(1,'hour')  from dual-------------  +000000000 01:00:00.000000000   ----------1小时

select numtodsinterval(1,'minute')  from dual--------  +000000000 00:01:00.000000000   ----------1分钟

select numtodsinterval(1,'second')  from dual----------  +000000000 00:00:01.000000000   ----------1秒钟

如果和时间sysdate结合使用的话

 select sysdate+numtodsinterval(1,'hour') from dual------   2015/10/30 15:00:52   ----在当前时间上加一个小时,其他单位同理。

4.numtoyminterval函数

numtoyminterval(x,c):

与numtodsinterval函数类似,将x转换为interval  year  to month 数据类型

常用的单位有(‘year’,‘month’)

select numtoyminterval(1,'month')  from dual   ---------  +000000000-01   -----------------    一个月

select numtoyminterval(1,'year')  from dual   --------------  +000000001-00     -----------------     一年

select sysdate+numtoyminterval(1,'month')  from dual   ----   2015/11/30 14:14:45  ----  当前时间上加上一个月

5.substr函数

字符串截取函数:

函数语法:

substr(字符串,截取开始位置,截取长度)//返回的是截取的字符串。

截取开始位置为0和1:表示截取开始位置为第一个字符。

截取开始位置为负数(-i):表示截取的开始位置为字符串右端向左数第i个字符。

案例演示:

 select substr('Hello World',0,2) value from dual;    ------------------   He   ----------描述就都不描述了,看语法已经说的很清楚了。

select substr('Hello World',-0,2) value from dual;    ------------------   He

 select substr('Hello World',1,2) value from dual;   ------------------  He

select substr('Hello World',-1,2) value from dual;  ------------------   d

select substr('Hello World',-2,2) value from dual;  --------------------    ld

select substr('Hello World',-3,2) value from dual;  ---------------------   rl

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值