
sql中的iif语句详解.doc
2页sql 中的 iif 语句详解(一)Access 数据库大家知道在 access 中有 iif 函数,能将一个判断赋值序列简化成一个表达式,比如 iif(a>b,1,2),如果确实 a>b 那么结果给出 1,否则就是 2这实在很方便 示例(1)数字如果 Measures.CurrentMember 是空单元,则下面的示例返回 0,否则返回 1 IIf(IsEmpty(Measures.CurrentMember), 0, 1) (2)字符串 如果 Measures.CurrentMember 是空单元,则下面的字符串返回字符串"Yes",否则返回字符串"No" IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")在 Access 中我可以用 IIF 函数进行统计汇总,比如,要知道实际应该交费的用户个数Access 写法: Select sum(iif(金额>0, 1,0)) as num from 费用MS SQL 写法:select sum(case when 金额>0 then 1 else 0 end) as num from 费用(二)Ms SQL 数据库IIF 在 SQL 中是 case when ....then ...else... end 例:select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx这里我举个例子,有一个表政策法规表(policy_fgxx),有 ID(主键)、bzh (标准号)、zynr (主要内容)、fbrq(发布日期)四个字段Select * From policy_fgxx 结果:ID bzh zynr fbrq13 001 你好 2010-05-07 0:00:0015 NULL我不想要上面的结果,我想要下面这个结果:ID bzh zynr fbrq13 001 你好 2010-05-07 0:00:0015 无 1990-06-06 0:00:00也就是说,标准号为空的时候我想让它显示空,发布日期为 null 的时候我想让它显示我指定的日期下面我给出写法,大家可以自己思考Select id,zynr,(case when bzh='' then '无' else bzh end) AS bzh,(case when fbrq is null then '1982-06-02' else fbrq end) AS fbrq From policy_fgxx。












