sql server中的大小写条件?对于Decimals数据类型?

时间:2012-01-04 11:18:57

标签: sql-server-2008 tsql

在Sql server中,我正在尝试编写一个查询,如果该值小于零,我想显示“< 0”其他明智的相同值。为此,我想简单的查询像这样: 我知道它会给出转换错误,但你可以帮忙吗。

declare @ret decimal = 0.25    
select (case when @ret <0 then  '< 0'  else  @ret  end) as colum     

3 个答案:

答案 0 :(得分:3)

试试这个,注意关于十进制的精确修饰符

declare @ret decimal(10,5) =0.25
select case when @ret < 0 THEN '< 0'  ELSE cast(@ret as varchar) end as colum

答案 1 :(得分:1)

如果您没有为@ret变量指定精确度和比例,默认情况下缩放比例为0(请参阅MSDNThe default scale is 0),只需在声明时指定比例变量:

DECLARE @ret DECIMAL(10,2) = 0.25 

SELECT 
     CASE 
          WHEN @ret < 0 THEN '< 0' 
          ELSE CAST(@ret AS VARCHAR)
    END

答案 2 :(得分:0)

CASE中使用TSQL时的基本示例:

declare @iDec decimal(10,5) = 10.5
SELECT   ProductNumber, 
      Category =
      CASE ProductLine
         WHEN @iDec > 1 THEN 'Greater Than 1'
         WHEN @iDec < 1 THEN 'Less Than 1'
         ELSE 'Equal to 1'
      END,
      Name
FROM Production.Product
ORDER BY ProductNumber;