在Sql server中,我正在尝试编写一个查询,如果该值小于零,我想显示“< 0”其他明智的相同值。为此,我想简单的查询像这样: 我知道它会给出转换错误,但你可以帮忙吗。
declare @ret decimal = 0.25
select (case when @ret <0 then '< 0' else @ret end) as colum
答案 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
(请参阅MSDN:The 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;