Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQL CASE语句但返回相同的列值_Sql_Case - Fatal编程技术网

使用SQL CASE语句但返回相同的列值

使用SQL CASE语句但返回相同的列值,sql,case,Sql,Case,我是SQL的新手,有以下问题: 我在一个名为Performance的表格中有以下列: 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 '-'

我是SQL的新手,有以下问题:

我在一个名为Performance的表格中有以下列:

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
我知道这是不正确的&另一个正在研究的问题是数字列的数据类型是小数18,2

有人能帮我选择吗?正如我所提到的,我对SQL还是新手,但我认为CASE不是适合这种情况的选择


谢谢

您需要将数字转换为varchar19 18+十进制分隔符

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

您需要将数字转换为varchar19 18+十进制分隔符

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

你为什么要这样做?这闻起来像是你在寻求错误问题的解决方案。如果0.00表示没有测量值,您是否考虑过使用空值而不是0.00?在显示数据时是否需要“-”?如果是这样,您不应该在数据库层,而应该在应用程序层执行此操作。是-它仅用于显示数据,不对DBSo进行任何更改。正确的方法是检查程序中的值,如果它等于0.0,则改为打印“-”。如果没有测量,也可以考虑使用NULL,而不是0。为什么要这样做?这闻起来像是你在寻求错误问题的解决方案。如果0.00表示没有测量值,您是否考虑过使用空值而不是0.00?在显示数据时是否需要“-”?如果是这样,您不应该在数据库层,而应该在应用程序层执行此操作。是-它仅用于显示数据,不对DBSo进行任何更改。正确的方法是检查程序中的值,如果它等于0.0,则改为打印“-”。如果没有测量,也可以考虑使用NULL,而不是0。