当前位置 > 首页 > Sql

【SQL】请教case when vs isnull+nullif使用经验?

2012-9-8 10:24:00来源:Sql

SQL 2008。

请先看一个例子:

select case col when 0 then 0 else 2 end from tb;--col字段只会有两个值,0和1,现在希望当col=1时,返回2,为0则不变(以便其它地方按位组合)

select isnull(nullif(col,1),2) from tb;

经常写语句的同仁可能会发现这俩句式在很多场景是能互换的,但一直对它们的性能没谱,到底哪一种要好些,求解答。

另外,附一个问题:1,2,4,8……这样可以按位组合的项,给定一个结果,如何判定某一项是否包含其中?例如:结果为7,一眼就能看出它是1+2+4的组合,12则是4+8的组合,那如何通过公式/算法确定某项是否包含在结果中呢?