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
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
相关文章推荐
- iOS开发系列--通知与消息机制
- cygwin-安装断点续传
- iPhone 横屏变大和一些meta标签解释
- Java 按字节获得字符串(中文)长度
- Hdu 4507 吉哥系列故事——恨7不成妻 (数位DP)
- 顺序栈与栈链以及其应用
- Android6.0 新特性详解
- Linux环境下Nginx安装及Ubuntu Server 15.0.4尝试安装Nginx
- Linux下Tomcat的启动、关闭、杀死进程
- gen already exists but is not a source folder. Convert to a source folder or rename it.
- 解析:SaaS 2.0 时代之风起云涌
- GPUImage简单说明
- 《大道至简》第五章有感
- shell 脚本完成对日志文件的提取
- 浅析观察者模式
- 小议:Domain User无法远程登录Computer
- 大数据并行处理框架介绍
- PHP array_slice
- 数据库的恢复模式
- IIS的主机头的理解