DECODE 函数
DECODE 函数是 SQL*PLUS 中众多功能强大的函数之一— — 也许它的功能是最强大
的 标准的 SQL 中没有过程函数 它是包括在如 COBOL 和 C 语言中的
DECODE 语句与程序语言中的 IF THEN 语句类似 对于复杂的报表来说灵活性是
必需的 DECODE 可以弥补标准的 SQL 与过程语言函数之间的缺陷
语法
DECODE(column1; value1; output1; value2; output2; output3)
语法中的例子是对 column1 列执行 DECODE 函数 如果 column1 有一个值为 value1
那么将会用 output1 来代替当前值 如果 column1 的值为value2 那么就会用 OUTPUT2 来
代替当前值 如果 column1 中哪两个值都不是 那么就会用 OUTPUT3 来代替当前值
实际应用的例子呢 我们先来对一个新表运行一下 SELECT 语句
输入
SQL》 select * from states;
461
…………………………………………………………Page 462……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输入
ST IL
IN OH
FL CA
KY NY
7 rows selected。
现在来用一下 DECODE 命令
输入
SQL》 select decode(state;"IN";"INDIANA";"OTHER") state from states;
输出
STATE OTHER
INDIANA OTHER
OTHER OTHER
OTHER OTHER
7 rows selected。
分析
符合条件 州为 IN 的记录只有一条 所以只有一行显示为 INDIANA 其它的记录
看上去都不符合 因为它们的显示为 OTHER
下边的例子为表中的每一个值提供了输入字符串 只有当你的州不在列表中时 你才
会收到 OTHER 信息
输入
SQL》 select decode(state;"IN";"INDIANA";
2 "FL";"FLORIDA";
3 "KY";"KENTUCKY";
4 "IL";"ILLINOIS";
5 "OH";"OHIO";
6 "CA";"CALIFORNIA";
7 "NY";"NEW YORK";"OTHER")
8 from states;
输出
462
…………………………………………………………Page 463……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
DECODE(STATE)
INDIANA
FLORIDA
KENTUCKY
ILLINOIS
OHIO
CALIFORNIA
NEW YORK
7 rows selected。
这实在太容易了 在下一个例子中将引入一个 PAY 表 这个表可以显示职 DECODE
函数更为强大的能力
输入
SQL》 col hour_rate hea 〃HOURLY|RATE〃 for 99。00
SQL》 col date_last_raise hea 〃LAST|RAISE〃
SQL》 select name; hour_rate; date_last_raise
2 from pay;
输出
HOURLY LAST
NAME RATE RAISE
JOHN 12。60 01…JAN…96
JEFF 8。50 17…MAR…97
RON 9。35 01…OCT…96
RYAN 7。00 15…MAY…96
BRYAN 11。00 01…JUN…96
MARY 17。50 01…JAN…96
ELAINE 14。20 01…FEB…97
7 rows selected。
准备好了吗 现在是给在 PAY 表中的每个人长工资的时候了 如果某个人上次长工资
的时间是 1997 年 那么将他的工资上浮 10% 如果他上次长工资是在 1996 年 那么将他
的工资上浮 20% 此外 还要显示在这两种情况下工资上调的百分率
输入
SQL》 col new_pay hea "NEW PAY" for 99。00
SQL》 col hour_rate hea "HOURLY|RATE" for 99。00
463
…………………………………………………………Page 464……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》 col date_last_raise hea "LAST|RAISE"
SQL》 select name; hour_rate; date_last_raise;
2 decode(substr(date_last_raise;8;2);"96";hour_rate * 1。2;
3 "97";hour_rate * 1。1) new_pay;
4 decode(substr(date_last_raise;8;2);"96";"20%";
5 "97";"10%";null) increase
6 from pay;
输出
HOURLY LAST
NAME RATE RAISE NEW PAY INC
JOHN 12。60 01…JAN…96 15。12 20%
JEFF 8。50 17…MAR…97 9。35 10%
RON 9。35 01…OCT…96 11。22 20%
RYAN 7。00 15…MAY…96 8。40 20%
BRYAN 11。00 01…JUN…96 13。20 20%
MARY 17。50 01…JAN…96 21。00 20%
ELAINE 14。20 01…FEB…97 15。62 10%
7 rows selected。
分析
根据输出情况 除了 JEFF 和 ELAINE 每个人的工资都上涨了 20% 他们在今年已经
涨过工资了
日期转换
如果你想对日期的显示加一些附加的格式 那么你?
小说推荐
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 最新章:第214章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 深入浅出MFC第2版(PDF格式)
- -Page 1-Page 2-山高月小山高月小 水落石出水落石出山高月小山高月小 水落石出水落石出-Page 3-深入淺出MFC(第版 使用Visual C 5.0 MFC 4.2)Dissecting MFC(Second Edition Using Visual C 5.0 MFC 4.2)侯俊
- 最新章:第309章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- 电子电路大全(PDF格式)
- -Page 1-电力生产人员技能培训电路基础部分电路基础部分电电路路基基础础部部分分-Page 2-一、电路的基本概念和基本定律-Page 3-考试点1o 1、掌握电阻、独立电压源、独立电流源、11受控源、电容、电感、耦合电感、理想变压器诸元件的定义、性质2o 2、掌握电流、电压参考方向的概念223
- 最新章:第353章