【问题标题】:Identify the left and right part of the decimal (varchar)识别小数的左右部分(varchar)
【发布时间】:2017-12-11 17:03:59
【问题描述】:

我需要将像 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

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    您尝试过 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多