条件取决于参数

时间:2010-05-10 07:53:15

标签: sql sql-server-2005 tsql stored-procedures

我是一个sql新手,我使用的是mssql2005

我喜欢选择具有取决于输入参数的条件

我试过了。

 WHERE CF.PROCESS_DATE = '2010-05-05' AND 
 CASE @CATEGORY_LEVEL
    WHEN 'L' THEN CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = ''
    WHEN 'M' THEN CAS.SCATEGORY_ID = ''
 END

但没有奏效,发生了错误。

sql很难新手程序员.. T.T

2 个答案:

答案 0 :(得分:1)

您可以将条件重写为:

 WHERE CF.PROCESS_DATE = '2010-05-05' AND 
       (
           (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '') OR
           (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')
       )

答案 1 :(得分:1)

WHERE CF.PROCESS_DATE = '2010-05-05' AND 
    (

    (@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '')

    OR

    (@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')

    )

(联合国)幸运的是,你的代码适用于其他数据库(例如Postgres,MySQL),SQL Server没有对boolean的第一类支持,所以你的THEN之后的表达式不会导致boolean类型,因此不会在Sql Server中工作