易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE 中的DECODE函数

      昨天面试被问到了分段统计,我知道decode可以,面试官接着要我说decode的语法,没回答上来.从网上找的资料稍微改了一下.
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。
      DECODE有什么用途呢? 先构造一个例子,假设我们想给职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,8000元的不变.如果想先预览一下加工资后的结果可以用decode函数.如下:
      select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary) from employee 
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
  decode()函数使用技巧
  ·软件环境:
  1、Windows NT4.0+ORACLE 8.0.4
  ·含义解释:
  decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
  该函数的含义如下:
  IF 条件=值1 THEN
  RETURN(翻译值1)
  ELSIF 条件=值2 THEN
  RETURN(翻译值2)
  ......
  ELSIF 条件=值n THEN
  RETURN(翻译值n)
  ELSE
  RETURN(缺省值)
  END IF
  · 使用方法:
  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”,达到了取较小值的目的。
  2、表、视图结构转化
  现有一个商品销售表sale,表结构为:
  month    char(6)      --月份
  sell    number(10,2)   --月销售金额
  现有数据为:
  200001  1000
  200002  1100
  200003  1200
  200004  1300
&


相关文档:

oracle 视频笔记2(CreateNewUser)

 1.备份scott
(1)在C盘的根目录下创建一个文件夹temp
(2)在cmd在进入文件夹,del *.* ,删除所有文件。
(3)输入exp
(4)输入用户名和密码:scott/tiger
(5)就会显示“输入数组提取缓冲区大小”,在这一步直接回车就行了
(6)显示“导出文件:DXPDAT.DMP>”,这一步也是回车
( ......

ORACLE ROLLUP和CUBE的使用

ROLLUP,是GROUP BY子句的一种扩展,可以为每个分组返回小计记录以及为所有分组返回总计记录。
CUBE,也是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。
在文章的最后附上了相关表和记录创建的脚本。
1、向ROLLUP传递一列
SQL> select division_id,sum(salary)
  2  ......

Oracle触发器(概念和类型)

1.       引言
 
2.       触发器的概念和类型
触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:
* 安全性。可以基于数据库的值 ......

ORACLE NULL详解

问:什么是NULL?
答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。
ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:
1、主键字段(primary key),
2、定义时已经加了NOT NULL限制条件的字段
说明:
1、等价于没有任何值、是未知数。
2 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号