SQL:过滤where子句中的case-statement数据替换

Ste*_*ert 1 sql sql-server where

如果我有一个名为'Beasties'的表,并且我想对列中的数据值进行一些条件替换,例如Animal,然后对该列进行过滤,我会尝试这样做...

SELECT 
   (CASE Animal 
    WHEN 'Horse' THEN 'Zebra' 
    ELSE Animal
    END) AS Species
FROM Beasties 
WHERE Species='Zebra'
Run Code Online (Sandbox Code Playgroud)

但是T-SQL不允许WHERE子句,它只会让我使用Animal而不是Species.如何过滤重命名(因此编辑)的列值?

在此先感谢任何帮助.

小智 5

做这个:

SELECT 
   (CASE Animal 
    WHEN 'Horse' THEN 'Zebra' 
    ELSE Animal
    END) AS Species
FROM Beasties 
WHERE 'Zebra'=(CASE Animal WHEN 'Horse' THEN 'Zebra'  ELSE Animal END)
Run Code Online (Sandbox Code Playgroud)