2012-12-10 36 views
2

我在SQL &新手有以下问题:使用SQL CASE语句,但返回同一列的值

我曾经在一个表中调用表演下面几列:

numbers 
------- 
13.80 
4.9 
32.1 
0.00 
12 
0.00 

我想选择这张表,但0.00的地方,我想返回 - 。所以之后的选择应该是:

numbers 
------- 
13.80 
4.9 
32.1 
- 
12 
- 

我使用的情况下,尝试如下:

select 
    numbers, 
    case numbers 
     when 0.00 then '-' 
    end as numbers 
from 
    Performance 

我知道这不正确&另一个在作品扳手是数字列数据类型为decimal(18, 2)

有人可以帮我选择这个吗?就像我刚才提到的,我对SQL还是一个​​新手,但我认为CASE不适合做这个。

THANK YOU

+0

你为什么要这么做?这听起来像是你要求解决错误的问题。您是否考虑过使用NULL值而不是0.00,如果0.00表示没有测量值? 您想在呈现数据时使用' - '吗?如果是这样,你不应该在你的数据库层,而是在你的应用层。 –

+0

YES - 仅用于显示数据,不会更改数据库 – user1890948

+1

因此,正确的方法是检查程序中的值,如果它等于0.0,则输出' - '。如果没有测量,考虑使用NULL而不是0.0。 –

回答

4

你需要转换你的号码给varchar(19)(18 +小数点分隔符)。

select case numbers 
     when 0 
     then '-' 
     else cast(numbers as varchar(19)) 
     end as numbers 
+0

非常好,你。这工作! – user1890948