SELECT decode(sign(to_date('2008-05-01', 'yyyy-MM-dd') - --decode只支持比较值的相等和不相等,所以用sign(正数返回1,否则0)和1比较. decode(floor(a/b),0,a,b) 用case...when select case ----------------------------------------------------------- decode用法: 例如 select count(*) from news decode函数可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。 函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。区别于SQL的其它函数,DECODE函数还能识别和操作空值。 如果应用中没有建立代码表,使用docode函数进行key–>value的转换是一种不错的替代方案,只是为应用的后期维护带来麻烦。 语法如下: DECODE(control_value,value1,result1[,value2,result2…][,default_result]); 参数说明: control _value 试图处理的数值。可以是数据库中表的某一列,DECODE函数将该数值与后面的一系列的偶序相比较,以决定返回值。 value1 是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使用关键字NULL于之对应 result1 是一组成序偶的结果值。 default_result 未能与任何一个值匹配时,函数返回的默认值。 示例: 首先创建一张sale表,并插入一些测试数据: create table class(id char(2),name varchar2(50), valid_flag char(1)); insert into class values('01','语文','Y'); insert into class values('02','数学','Y'); insert into class values('03','外语','N'); insert into class values('04','历史'); 首先看一下decode函数的基本用法: select id, name, decode(valid_flag, 'Y', '有效', 'N', '无效','未设置') from class; ID NAME DECODE(VALID_FLAG,'Y','有效',' -- -------------------------------------------------- ------------------------------ 01 语文 有效 02 数学 有效 03 外语 无效 04 历史 未设置 说明: 当valid_flag为’Y'时,则返回’有效’; 当month为’N'时,则返回’无效’; 其他则返回’未设置’。 以上的sql语句可以通过case实现: select id, name, case valid_flag when 'Y' then '有效' when 'N' then '无效' else '未设置' end from class; 由以上sql语句可以看出,使用decode函数要简洁的多。 另外,还可以在Order by中使用decode: 例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。 select * from table_subject order by decode(subject_name, ‘语文’, 1, ‘数学’, 2, , ‘外语’,3) |
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) | Powered by Discuz! X3.2 |