cast(带小数的SUBSTRING

cast(SUBSTRING with decimal

我有这一行,可以将我的专栏变成一个数字

       case when Auth_Amt  LIKE '%DAY%'  then cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION('/DAY' IN Auth_Amt) - 1) as numeric) when Auth_Amt  LIKE '%TAX%'  then cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION(' ' IN Auth_Amt) - 1) as numeric)
            when Auth_Amt  LIKE '%SCHG%'  then cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION(' ' IN Auth_Amt) - 1) as numeric)
            else 0
       end as Amt_Day

我可以添加什么以使其返回时也保留两位小数。现在是整数带回来。

你可以这样试试:

case when Auth_Amt  LIKE '%DAY%'  then CAST(cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION('/DAY' IN Auth_Amt) - 1) as decimal(13,2)) as decimal(13,2))
     when Auth_Amt  LIKE '%TAX%'  then CAST(cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION(' ' IN Auth_Amt) - 1) as decimal(13,2)) as decimal(13,2))
     when Auth_Amt  LIKE '%SCHG%' then CAST(cast(SUBSTRING(Auth_Amt FROM 1 FOR POSITION(' ' IN Auth_Amt) - 1) as decimal(13,2)) as decimal(13,2))
      else 0
end as Amt_Day

一般来说,你必须像这样 CAST:

CAST(yourField as decimal(13,2))