在Where子句中重写case语句

时间:2015-01-19 05:18:52

标签: sql sql-server

如何重新编写where子句中使用的以下sql server case语句。这会导致性能下降。

   SELECT mode,m_name from mst_mode a 
   WHERE
       CASE @mode
          WHEN 'K' THEN 'Y'
                   ELSE ISNULL(a.MODE, 'N')
          END = CASE @mode
                   WHEN 'K' THEN 'Y'
                            ELSE @mode
   END

1 个答案:

答案 0 :(得分:3)

试试这个。

SELECT mode,
       m_name
FROM   mst_mode a
WHERE  ( @mode = 'K' )
        OR ( @mode <> 'K' and Isnull(a.MODE, 'N') = @mode )