我是一个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
答案 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中工作