Sql server SQL Server:需要在最后两个字符前添加一个点

Sql server SQL Server:需要在最后两个字符前添加一个点,sql-server,tsql,Sql Server,Tsql,我有一个从平面文件中提取的数据,我需要在最后两个字符前添加一个点 比如说 原始表格: Price Discount Coupon ----------------------------- 30000 3000 5060 12500 2050 0 5900 590 0 59000 5900 1000 7030 0 0 37

我有一个从平面文件中提取的数据,我需要在最后两个字符前添加一个点

比如说

原始表格:

Price   Discount      Coupon 
-----------------------------
30000    3000         5060  
12500    2050            0  
 5900     590            0  
59000    5900         1000  
 7030       0            0  
37100    5020            0  
21800       0         5060  
 3000    1020            0  
转换表:

Price    Discount      Coupon 
-------------------------------
300.00     30.00       50.60  
125.00     20.50        0  
 59.00      5.90        0  
590.00     59.00       10.00  
 70.30      0           0  
371.00     50.20        0  
218.00      0          50.60  
 30.00     10.20        0  
我在SQL Server中尝试了以下查询:

SELECT 
    (LEFT([Price], LEN([Price]) - 2)) + '.' + RIGHT(RTRIM([price]), 2) 
FROM 
    dbo.Rawdata
但它只适用于第一列

味精537,第16级,状态2,第4行
传递给LEFT或SUBSTRING函数的长度参数无效


非常感谢

尝试为0添加检查

SELECT case when Coupon <> '0' 
     then  (LEFT([Price],LEN([Price] )-2) ) +'.'+RIGHT(RTRIM([price]),2 )  
     else 0 end 
    FROM dbo.Rawdata
选择优惠券“0”时的案例
然后(左([Price],LEN([Price])-2))+'.+右(RTRIM([Price]),2)
其他0结束
来自dbo.Rawdata

SELECT(左([Price],左([Price])-2))+'.+右(RTRIM([Price]),2)
来自dbo.Rawdata
其中优惠券“0”

尝试为0添加检查

SELECT case when Coupon <> '0' 
     then  (LEFT([Price],LEN([Price] )-2) ) +'.'+RIGHT(RTRIM([price]),2 )  
     else 0 end 
    FROM dbo.Rawdata
选择优惠券“0”时的案例
然后(左([Price],LEN([Price])-2))+'.+右(RTRIM([Price]),2)
其他0结束
来自dbo.Rawdata

SELECT(左([Price],左([Price])-2))+'.+右(RTRIM([Price]),2)
来自dbo.Rawdata
其中优惠券“0”

尝试一个CASE语句:
当LEN([Coupon]>2时的CASE,然后(您正在做的事情)否则…END
看起来像是XY问题。如果这些数据是数字,只需将其转换为十进制并除以100。是否确实要插入一个“点”?或者您想将一个数字除以100,并将结果格式化为小数点后的2位吗?如果输入为“7”,您希望看到“0.07”吗?这不是您正在转换为美元的美分值吗?请尝试一个案例语句:
CASE WHEN LEN([Coupon]>2)(您正在做的事情)否则…END
看起来像是XY问题。如果这些数据是数字,只需将其转换为十进制并除以100即可。是否确实要插入一个“点”?还是要将一个数字除以100,并将结果格式化为十进制后的两位?如果输入为“7”,是否希望看到“0.07”?这不是您正在转换为美元的美分值吗?