您的位置:首页 > 其它

sign、decode、numtodsinterval、numtoyminterval、substr

2015-10-30 10:57 423 查看
在一次写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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: