在找到特定值时将十进制转换为int

时间:2017-01-11 21:13:03

标签: sql

我有一个查询,用于比较使用CTE的周数据。它存储的一件事是百分比数据。我试图转换或转换任何等于100.00的值。

例如,结果如下所示

Name     Percentage     Other
App1     99.56          5.5
App2     100.00         6

我希望从100中删除零。我已经尝试了一些案例陈述,但我从未得到我正在寻找的结果。这就是我现在所拥有的。

SELECT
    f.Application,
    f.Percentage,
    f.Other,
    CASE
        WHEN f.Percentage = 100.00
        THEN 100
    END AS Percentage
FROM Table1 f

目前,100.00的值更改为100.但是,不等于100.00的所有值都将被清除。我可以通过添加

来消除NULL
ELSE f.Percentage

但是100.00没有改变。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的,您不能拥有包含多种数据类型的单个SQL列。

话虽如此,在你的情况下它是否有用还有待观察,但像nvarchar之类的字符串类型可以同时处理它们,尽管你的代码需要能够处理它们作为字符串而不是数字。

一个例子是这样的:

SELECT
    f.Application,
    f.Percentage,
    f.Other,
    CASE
        WHEN f.Percentage = 100.00
        THEN '100'
        ELSE CAST(f.Percentage as nvarchar(10))
    END AS Percentage
FROM Table1 f

Percentage列现在属于nvarchar类型,但它会以这种方式返回值:

Name     Percentage     Other
App1     99.56          5.5
App2     100            6
App3     91.23          3.5
App4     94.41          4.8
App5     100            6