如果我有一个名为'Beasties'的表,并且我想对列中的数据值进行一些条件替换,例如Animal,然后对该列进行过滤,我会尝试这样做......
SELECT
(CASE Animal
WHEN 'Horse' THEN 'Zebra'
ELSE Animal
END) AS Species
FROM Beasties
WHERE Species='Zebra'
但是T-SQL不允许WHERE子句,它只会让我使用Animal而不是Species。如何过滤重命名的(因此编辑过的)列值?
提前感谢您提供任何帮助。
答案 0 :(得分: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)
答案 1 :(得分:2)
你可以把它放在子查询中:
SELECT *
FROM (
SELECT
(CASE Animal
WHEN 'Horse' THEN 'Zebra'
ELSE Animal
END) AS Species
FROM Beasties
)
WHERE Species='Zebra'
答案 2 :(得分:1)
我不知道是否有一种特别优雅的方式,但如果没有这种方法,这应该有用:
WHERE Animal IN ('Horse', 'Zebra')