这似乎是一个受欢迎的场景,但我似乎无法从之前关于该主题的答案中实现解决方案。
我需要在SQL Server 2012中执行类似的操作:
DECLARE @conditionVarChar AS VARCHAR(MAX) = 'Use ham'
DECLARE @food AS VARCHAR(MAX) = 'ham'
DECLARE @somethingElse VARCHAR(MAX) = 'somethingelse'
SELECT *
FROM tempTable
--Here is my issue
WHERE CASE WHEN @conditionVarChar LIKE '%ham%' --If there is 'ham' in this varchar
THEN @food = tempTable.Food --Then filter from this
ELSE @somethingElse = tempTable.SomethingElse --Else, filter on something completely different
END
由于
答案 0 :(得分:4)
您真的不需要CASE
语句来执行此操作,您只需过滤一组条件并使用OR
:
WHERE (@conditionVarChar LIKE '%ham%' AND @food = tempTable.Food)
OR (@somethingElse = tempTable.SomethingElse)
根据实际标准,使用动态SQL构建标准列表可能更实际。