SQLServer Number需要转换为整数

时间:2018-07-11 05:24:41

标签: sql sql-server tsql

我的数据如下,

Id    EmpName   Amt
101   AAA       100.0000
102   BBB       -

如果Amt是数字,则我需要显示100(不带小数点)或按原样显示。

预期o / p

Id    EmpName   Amt
101   AAA       100
102   BBB       -

我在下面使用过但出现异常,

select id, empname, (CASE WHEN amt NOT LIKE '%[^0-9]%' then amt else left(CONVERT(varchar(50), CAST(ROUND(amt,0) AS money), 1),len(CONVERT(varchar(50), CAST(ROUND(amt,0) AS money), 1)) - 3) end ) 
            as ff,

3 个答案:

答案 0 :(得分:0)

您可以使用TRY_CAST

SELECT id, empname, ROUND(TRY_CAST(Amt AS DECIMAL(18,4)),0) AS amt
FROM tab

答案 1 :(得分:0)

我会使用try_convert()

select id, empname,
       (case when try_convert(decimal(18, 0), amt)
             then convert(varchar(255), convert(decimal(18, 0), amt))
             else amt
        end) as ff
. . . 

答案 2 :(得分:-1)

尝试一下

Select id, empname, CASE WHEN ISNUMERIC(amt) = 1 AND amt NOT IN ('-','+','$','.',',','\') 
                         THEN CAST(Round(CAST(amt as float),0) as varchar(50)) 
                         ELSE amt END as amt 
FROM tbl