识别小数的左右部分(varchar)

时间:2017-12-11 17:04:00

标签: sql-server tsql

我需要将此1250之类的varchar值转换为十进制值12.50

一些例子:

16500 165.00
17525 175.25
1015  10.15
 955  9.55 

我实际上使用它来执行stuff(@total,len(@total)-1,0,'.'),然后将我的值插入表格中的十进制列。这有效直到varchar值大于100 = 1.00。实际上,如果我得到一个像5 = 0.05(5美分)这样的值,我就会遇到问题并且它不起作用。它还必须适用于-3 = -0.03

等负值

1 个答案:

答案 0 :(得分:4)

您是否尝试过TRY_CAST功能? 像

这样的东西
    SELECT TRY_CAST('1625' AS float) / 100
    FROM yourtable

编辑: 更好的是:)

    SELECT
        CASE WHEN ISNUMERIC(@total) = 1
         THEN TRY_CAST(@total AS float) / 100
         ELSE 'NOT NUMERIC'
        END AS Total
    FROM yourtable