1

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

SELECT 
   (CASE Animal 
    WHEN 'Horse' THEN 'Zebra' 
    ELSE Animal
    END) AS Species
FROM Beasties 
WHERE Species='Zebra'

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

提前感谢您对此的任何帮助。

4

3 回答 3

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)
于 2013-03-19T12:44:39.720 回答
2

您可以将其粘贴在子查询中:

SELECT *
FROM (
    SELECT 
       (CASE Animal 
        WHEN 'Horse' THEN 'Zebra' 
        ELSE Animal
        END) AS Species
    FROM Beasties
)
WHERE Species='Zebra'
于 2013-03-19T12:50:14.780 回答
1

我不知道是否有一种特别优雅的方式来做到这一点,但如果没有,这应该可以工作:

WHERE Animal IN ('Horse', 'Zebra')
于 2013-03-19T12:44:38.673 回答