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”?这不是您正在转换为美元的美分值吗?