请问各位大侠DB2中有没有象MSSQL和Oracle中的case语句?

InsideJava 2003-08-21 11:08:51
请问各位大侠DB2中有没有象MSSQL和Oracle中的case语句(Oracle中的decode函数)?
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
db2boy 2003-08-21
  • 打赏
  • 举报
回复
CREATE PROCEDURE update_salary
(IN employee_number CHAR(6), IN rating INT)
LANGUAGE SQL
BEGIN
DECLARE SQLSTATE CHAR(5);
DECLARE not_found CONDITION FOR SQLSTATE '02000';
DECLARE EXIT HANDLER FOR not_found
SIGNAL SQLSTATE '02444';

CASE rating
WHEN 1 THEN
UPDATE employee
SET salary = salary * 1.10, bonus = 1000
WHERE empno = employee_number;
WHEN 2 THEN
UPDATE employee
SET salary = salary * 1.05, bonus = 500
WHERE empno = employee_number;
ELSE
UPDATE employee
SET salary = salary * 1.03, bonus = 0
WHERE empno = employee_number;
END CASE;
END
bluemeteor 2003-08-21
  • 打赏
  • 举报
回复
select creator,
count(case type when 'T' then 1 else null end) as tables,
count(case type when 'V' then 1 else null end) as views
from sysibm.systables group by creator

有啊,你可以试试这个SQL,记得要加end
young3292 2003-08-21
  • 打赏
  • 举报
回复
是的哦有的
条件表达式
可在 SQL 语句中使用 CASE 表达式以便于处理表的数据表示。这提供了一种功能强大的条件表达式能力,在概念上与某些程序设计语言中的 CASE 语句类似。
· 要从 ORG 表中的 DEPTNAME 列将部门编号更改为有意义的词,输入下列查询:
· SELECT DEPTNAME,
· CASE DEPTNUMB
· WHEN 10 THEN 'Marketing'
· WHEN 15 THEN 'Research'
· WHEN 20 THEN 'Development'
· WHEN 38 THEN 'Accounting'
· ELSE 'Sales'
· END AS FUNCTION
· FROM ORG
结果为:
DEPTNAME FUNCTION
-------------- -----------
Head Office Marketing
New England Research
Mid Atlantic Development
South Atlantic Accounting
Great Lakes Sales
Plains Sales
Pacific Sales
Mountain Sales
· 可使用 CASE 表达式来防止出现异常情况,如被零除等。在下列示例中,如果雇员没有奖金或佣金报酬,则语句条件通过避免除法运算来防止出错:
·
· SELECT LASTNAME, WORKDEPT FROM EMPLOYEE
· WHERE(CASE
· WHEN BONUS+COMM=0 THEN NULL
· ELSE SALARY/(BONUS+COMM)
· END ) > 10
· 可在单个语句中使用 CASE 表达式,根据一个列中值的子集的总和与该列中所有值的总和的比来产生一个比率。使用 CASE 表达式的语句只需要传送数据一次。在没有 CASE 表达式的情况下,执行同样的计算至少需要传送两次。
下列示例使用 CASE 表达式计算部门 20 的薪水之和与全部薪水总额的比率:
SELECT CAST(CAST (SUM(CASE
WHEN DEPT = 20 THEN SALARY
ELSE 0
END) AS DECIMAL(7,2))/
SUM(SALARY) AS DECIMAL (3,2))
FROM STAFF
结果为 0.11。注意:CAST 函数确保结果的精度得到保持。
· 可使用 CASE 表达式来计算简单的函数,而不必调用函数本身,调用函数将需要额外开销。例如:
· CASE
· WHEN X<0 THEN -1
· WHEN X=0 THEN 0
· WHEN X>0 THEN 1
· END
此表达式与 SYSFUN 模式中 SIGN 用户定义函数有相同的结果。
jiezhi 2003-08-21
  • 打赏
  • 举报
回复
case是標准sql裡面的,db2當然支持。

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧