- 浏览: 314173 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
1、NVL函数
oracle中很有用的一个函数,以前用过今天用的时候没想起来,结果可想而知——浪费时间呗,好了,闲话少说,步入正题。
标准解释
NVL(expr1,expr2)
如果expr1是NULL,则返回expr2,否则返回expr1.返回值与expr1类型相同,除非expr1是字符串类,在这种情况下将返回VARCHAR2类型.这个函数用于确保查询记录集中不包含NULL值.
类似的还有
NVL(expr1,expr2,expr3)
如果expr1是NULL,则返回expr2,否则返回expr3.返回值与expr2类型相同,除非expr2是字符类型,在这种情况下返回VARCHAR2类型。
今天我用的例子举个实例吧。
--从两个表中更新数据
--描述如下
--a:a1,a2,a3,……
--b:b1,b2,b3,……
--a.a1,a.a2与b.b1,b,b2对应的字段属性一样,存在对应关系,现在a.a2缺值要来自b.b2,
--由于表a的a2的约束条件是not null,第一次写的时候也没留意,导致一直更新不了,
--第一次代码:
--update a set a.a2=(select b.b2 from b where a.a1=b.b1);
--死活更新不了,后来琢磨半天,原来a2有约束不能为null,使用nvl更新后的代码如下:
--update a set a.a2=nvl((select b.b2 from b where a.a1=b.b1),a.a2);
--ok顺利更新!
2、TRUNC()函数:
--Oracle trunc()函数的用法
/**************日期********************/
1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
9.select trunc(sysdate, 'q') from dual --返回当前季度的第一天
/***************数字********************/
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
*/
9.select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual --123.458
15.select trunc(123) from dual --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120
http://database.51cto.com/art/201004/197703.htm
3、ROUND()函数:
Round( ) 函数
传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果
语法
ROUND( number, decimal_places )
number : 需四舍五入处理的数值
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )
返回值类型
数字
例子
select round(123.456, 0) from dual; 回传 123
select round(123.456, 1) from dual; 回传 123.5
select round(123.456, 2) from dual; 回传 123.46
select round(123.456, 3) from dual; 回传 123.456
select round(-123.456, 2) from dual; 回传 -123.46
4、DECODE()函数:
语法如下:
DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
control _value
试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。
value1
是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result1
是一组成序偶的结果值。
default_result 未能与任何一个值匹配时,函数返回的默认值。
示例如下:
select decode( x , 1 , ‘x is 1 ’, 2 , ‘x is 2 ’, ‘others’) from dual
当x等于1时,则返回‘x is 1’。
当x等于2时,则返回‘x is 2’。
否则,返回others’。
在需要比较2个值的时候,我们可以配合SIGN()函数一起使用。
SELECT DECODE( SIGN(5 -6), 1 'Is Positive', -1, 'Is Nagative', 'Is Zero')
另外,大家还可以在Order by中使用Decode。
例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
5、LAST_DAY()函数:
LAST_DAY函数返回指定日期对应月份的最后一天。
例:last_day(to_date('1999.11.29','yyyy.mm.dd')) 返回 1999年11月31日
例:last_day(to_date('2000.02.01','yyyy.mm.dd')) 返回 2000年2月29日
6、ADD_MONTHS()函数:
使用oracle add_months函数,就可以以得到某一时间之前或之后n个月的时间,如果您之前遇到过类似方面到的问题,不妨一看。
如果需要取上一个月的数据,并且每天都要进行此操作,每次都需要改时间,的确非常的麻烦,所以想到了oracle add_months函数这个函数
oracle add_months函数:
oracle add_months(time,months)函数可以得到某一时间之前或之后n个月的时间
如 select add_months(sysdate,-6) from dual;
该查询的结果是当前时间半年前的时间
select add_months(sysdate,6) from dual;
该查询的结果是当前时间半年后的时间
oracle中很有用的一个函数,以前用过今天用的时候没想起来,结果可想而知——浪费时间呗,好了,闲话少说,步入正题。
标准解释
NVL(expr1,expr2)
如果expr1是NULL,则返回expr2,否则返回expr1.返回值与expr1类型相同,除非expr1是字符串类,在这种情况下将返回VARCHAR2类型.这个函数用于确保查询记录集中不包含NULL值.
类似的还有
NVL(expr1,expr2,expr3)
如果expr1是NULL,则返回expr2,否则返回expr3.返回值与expr2类型相同,除非expr2是字符类型,在这种情况下返回VARCHAR2类型。
今天我用的例子举个实例吧。
--从两个表中更新数据
--描述如下
--a:a1,a2,a3,……
--b:b1,b2,b3,……
--a.a1,a.a2与b.b1,b,b2对应的字段属性一样,存在对应关系,现在a.a2缺值要来自b.b2,
--由于表a的a2的约束条件是not null,第一次写的时候也没留意,导致一直更新不了,
--第一次代码:
--update a set a.a2=(select b.b2 from b where a.a1=b.b1);
--死活更新不了,后来琢磨半天,原来a2有约束不能为null,使用nvl更新后的代码如下:
--update a set a.a2=nvl((select b.b2 from b where a.a1=b.b1),a.a2);
--ok顺利更新!
2、TRUNC()函数:
--Oracle trunc()函数的用法
/**************日期********************/
1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
9.select trunc(sysdate, 'q') from dual --返回当前季度的第一天
/***************数字********************/
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
*/
9.select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual --123.458
15.select trunc(123) from dual --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120
http://database.51cto.com/art/201004/197703.htm
3、ROUND()函数:
Round( ) 函数
传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果
语法
ROUND( number, decimal_places )
number : 需四舍五入处理的数值
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )
返回值类型
数字
例子
select round(123.456, 0) from dual; 回传 123
select round(123.456, 1) from dual; 回传 123.5
select round(123.456, 2) from dual; 回传 123.46
select round(123.456, 3) from dual; 回传 123.456
select round(-123.456, 2) from dual; 回传 -123.46
4、DECODE()函数:
语法如下:
DECODE(control_value,value1,result1[,value2,result2…][,default_result]);
control _value
试图处理的数值。DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。
value1
是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应
result1
是一组成序偶的结果值。
default_result 未能与任何一个值匹配时,函数返回的默认值。
示例如下:
select decode( x , 1 , ‘x is 1 ’, 2 , ‘x is 2 ’, ‘others’) from dual
当x等于1时,则返回‘x is 1’。
当x等于2时,则返回‘x is 2’。
否则,返回others’。
在需要比较2个值的时候,我们可以配合SIGN()函数一起使用。
SELECT DECODE( SIGN(5 -6), 1 'Is Positive', -1, 'Is Nagative', 'Is Zero')
另外,大家还可以在Order by中使用Decode。
例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。
select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
5、LAST_DAY()函数:
LAST_DAY函数返回指定日期对应月份的最后一天。
例:last_day(to_date('1999.11.29','yyyy.mm.dd')) 返回 1999年11月31日
例:last_day(to_date('2000.02.01','yyyy.mm.dd')) 返回 2000年2月29日
6、ADD_MONTHS()函数:
使用oracle add_months函数,就可以以得到某一时间之前或之后n个月的时间,如果您之前遇到过类似方面到的问题,不妨一看。
如果需要取上一个月的数据,并且每天都要进行此操作,每次都需要改时间,的确非常的麻烦,所以想到了oracle add_months函数这个函数
oracle add_months函数:
oracle add_months(time,months)函数可以得到某一时间之前或之后n个月的时间
如 select add_months(sysdate,-6) from dual;
该查询的结果是当前时间半年前的时间
select add_months(sysdate,6) from dual;
该查询的结果是当前时间半年后的时间
- 开发过程中遇到的一些SQL示例.rar (4.4 KB)
- 下载次数: 0
发表评论
-
取消订单还原bug问题查找
2015-11-24 20:21 228select * from dr_business_deput ... -
Oracle行列互换 横表和纵表相互转换
2014-05-22 19:15 5679行列互换 Java代码 收藏代码 /* 在实际使用sq ... -
to_char与trunc函数 比较区别
2014-04-21 19:40 1052出处:http://blog.sina.com.cn/s/bl ... -
Oracle数据库导入导出数据(备份)总结
2014-04-09 19:40 534我们一般日常开法中用到的数据库导入导出备份就两种,一种是备份表 ... -
项目开发里遇到的一些统计分析、超限率等的一些sql
2014-02-20 17:40 717本人本月等超载率的sql: 本日:select t1 ... -
Oracle TO_CHAR函数详解
2014-01-13 17:49 1527出处:http://blog.csdn.net/ytfy12/ ... -
Oracle常见命令
2013-08-13 16:57 591--SQL plus连接远程Oralce数据库: sql ... -
orcale中各个数据类型和java中各个数据类型的对应关系
2013-07-24 10:53 884Mysql Oracle Java BIGINT NUMBE ... -
oracle日期函数集锦
2013-04-25 14:30 846一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位 ... -
PL/SQL Developer远程连接Oracle
2013-04-03 14:06 622http://blog.chinaunix.net/uid-2 ... -
常见SQL语句及其函数集锦2
2013-03-25 16:18 917第八天(操作数据) insert ... -
sql语句时间类型字字段总结
2013-03-11 18:19 1052例如查询数据库里某时间端内的数据: select count( ... -
sql内连接,inner join、left join、right join区别及联系、用法
2013-02-27 13:42 1104http://www.docin.com/p-79720976 ... -
常见SQL语句及其函数集锦
2012-12-29 12:15 15791、select DISTINCT amout from ch ... -
常用sql语句
2012-11-21 16:58 838查询某个表里的所有字段名和字段类型: select COLUM ...
相关推荐
Oracle常用函数集锦,讲解Oracle常用函数使用,让你的Oracle更上一层楼, Oracle 基础入门
oracle常用函数总结 oracle常用函数总结
SQL21天自学通, 通用sql的使用,很详细, >>>另附加oracle专用sql语句详解
oracle常见函数整理
Oracle常用函数大全,每个函数都列举有例子,包括它的详细使用方法说明。
oracle常用函数总结,跟大家分享一下
oracle 常用函数下载,工作中经常用到
适合开发人员,内含Oracle常用函数,以及语句实例!
oracle常用函数oracle常用函数oracle常用函数oracle常用函数oracle常用函数oracle常用函数oracle常用函数
ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码...
一些Oracle常用函数,希望对初学者有帮助
通过学习将Oracle和Hive的常用函数整理出来做了个对比,提供他们各自支持的常用函数。
Oracle日期函数集锦,常见日期函数的使用,及具体的使用实例
oracle常用函数介绍
80个oracle常用函数总结
Oracle常用函数.pdf 看名知意 无需多说
sql,mysql,oracle常用的函数
3.CONCAT:连接两个字符串; SQL> select concat('010-','88888888')||'转23' 张三电话 from dual; 张三电话 ...SQL> select instr('oracle traning','ra',1,2) instring from dual; INSTRING ---------