2016-05-30 154 views
2

我想从我的MySQL数据库中选择数据。如果数据可用,我的数据库需要用符号响应。如果记录中没有数据,我的数据库应该回应一个空记录(没有符号)。CASE语句不起作用

我使用下面的SQL语句:

SELECT price1 
    CASE 
     WHEN price1 IS NOT NULL THEN CONCAT('€ ', price1) 
    END as price1 
FROM pricelist 
WHERE id=1 

当我运行该SQL语句,我得到一个错误。

有人知道我的代码有什么问题吗?

+0

你得到了什么错误?请发布错误消息。 –

+6

大小写之前缺少逗号。 – jarlh

+0

此外,这是一个案例表达式,而不是一个案例... – jarlh

回答

3

这是一个错字,您错过了一个逗号 - ,price1

除此之外,我将您的新列名从price1更改为new_price1,因为选择两个同名的列没有太大意义(可能会导致一些麻烦,特别是如果您想要过滤通过其中之一)

SELECT price1, 
    CASE 
     WHEN price1 IS NOT NULL THEN CONCAT('€ ', price1) 
    END as new_price1 
FROM pricelist 
WHERE id=1 

另一种选择是,你不打算选择price1,所以:

SELECT CASE WHEN price1 IS NOT NULL 
      THEN CONCAT('€ ', price1) 
     END as new_price1 
FROM pricelist 
WHERE id=1 
+0

我得到两个记录。一个带符号,一个没有符号 – John

+0

第二个工作。谢谢 – John

+0

一切都是解释队友@约翰,没问题。 – sagi

0

前面已经回答了,如果保持两列,你需要一个逗号( ,),但我认为你想改变price1的价值。

SELECT 
    CASE 
     WHEN price1 IS NOT NULL THEN CONCAT('€ ', price1) 
     ELSE '' --or null or.... 
    END as price1 
FROM pricelist 
WHERE id=1