2015-05-14 83 views
3

我觉得必须有一个更有效的方法来做到这一点。我想允许呼叫者要么把所有的书,或书籍中未隐藏(见下文)用WHERE子句重新设置简单的SQL语句

if isnull(@ShowHiddenBooks, 0) = 1 
    begin 
     select 
      (long list of fields) 
     from 
      MyTable 
     where 
      MyField = @SomeField 
    end 
else 
    begin 
     select 
      (long list of fields) 
     from 
      MyTable 
     where 
      MyField = @SomeField and 
      IsHidden = 0  
    end 

有什么想法?

谢谢!

回答

4
Select * 
from MyTable 
where MyField = @SomeField and 
(isHidden = 0 or @showHiddenBooks = 1) 
+0

这个失败TI考虑到当@showHiddenBooks为空。 – Steve

+0

@Steve,如果它为空,它不会是1 – ps2goat

+0

@ ps2goat SQL的语义不同于C#,null = 1是真的 – Steve

2

这equivqlent到:

select (long list of fields) 
    from 
     MyTable 
    where 
     MyField = @SomeField and 
     (IsHidden = 0 or isnull(@ShowHiddenBooks, 0) = 1)