替代CASE的方法

CASE是一个标量表达式,根据条件逻辑返回一个值,既然是表达式,就不能当是一条语句来控制逻辑的流程。

今天在网上看到一帖:http://topic.csdn.net/u/20110123/10/abbfd3ce-a858-4daa-bb25-167b2ed3e7f4.html?5083

 

根据上帖,创建一个表,并填充数据:

CREATE   TABLE  t
(
    a 
NVARCHAR ( 10 ),
    b 
NVARCHAR ( 10 )
)

INSERT   INTO  t  VALUES  ( ' 001 ' , ' y ' )
INSERT   INTO  t  VALUES  ( ' 002 ' , ' n ' )
INSERT   INTO  t  VALUES  ( ' 003 ' , ' y ' )
INSERT   INTO  t  VALUES  ( ' 004 ' , ' y ' )

 

 为了演示不使用CASE表达式,得到使用CASE表达式相同的效果,可以先创建一个辅助表:

CREATE   TABLE  s
(
    c 
nvarchar ( 10 ),
    d 
nvarchar ( 10 )
)

INSERT   INTO  s  VALUES ( ' y ' ,N ' ' )
INSERT   INTO  s  VALUES ( ' n ' ,N ' ' )

 

最后是使用这个辅助表与需要处理的表串联即可得到:

SELECT  a,d  FROM  t  RIGHT   JOIN  s  ON  (t.b  =  s.c)  ORDER   BY  t.a

 
执行结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值