假设我有一个像这样的数据库!
shoe_id | type | price
_____________________________
1 | Adidas | $50
2 | Nike | $60
3 | Adidas | $80
4 | Under Armor | $90
5 | Brooks | $60
这是正常的
SELECT shoe_id,
type,
price
FROM shoes;
会给我。我试图审查阿迪达斯鞋的价格。所以我正在检查鞋子的类型,如果是adidas那么我想用' - '代替价格。它看起来就是这样。
shoe_id | type | price
_____________________________
1 | Adidas | -
2 | Nike | 60
3 | Adidas | -
4 | Under Armor | 90
5 | Brooks | 60
以下是我一直在尝试的代码。
SELECT shoe_id,
type,
CASE price
WHEN type='adidas'
THEN '-'
END
FROM shoes
这对所有参赛作品都不起作用,我不知道为什么。有没有其他方法可以做到这一点肯定适用于类型为'adidas'的每个条目?
谢谢!
答案 0 :(得分:0)
你有正确的想法,但语法错误。您需要else
子句。你可以写:
SELECT shoe_id,type,
(CASE WHEN type = 'Adidas' THEN '-'
ELSE price
END) as price
FROM shoes;
但是,这可能不起作用,因为你有一个字符串和一个数字(大概)来自case
语句。您可能希望为字符串显式格式化价格,但该方法取决于数据库。
答案 1 :(得分:0)
我猜你可能有空格或不同的大小写字母
所以尝试使用upper和trim:
SELECT shoe_id,
type,
CASE upper(trim(type))
WHEN 'ADIDAS' THEN '-'
else to_char(price,'$999.99')
END
FROM shoes