如何根据另一列更改列的值

时间:2014-08-04 02:02:49

标签: sql

假设我有一个像这样的数据库!

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'的每个条目?

谢谢!

2 个答案:

答案 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

SQL Fiddle