这个问题与我以前的一个问题几乎相同,可以找到HERE
我有一个名为pa_value
的字段,它保留varchar
条记录
现在,此字段包含以下记录:
0,5582
0,6985
-0,1589
0,9856
-0,6589
我使用以下代码获得这些结果:
CAST (replace (p7.pa_value ,'%','') AS float (3,0)) as TotalMargin
我要做的是删除所有内容,只留下5个字符(如果字符串前面有 - (减号),则为6个字符)。 它应该是这样的:
55.82
69.85
-15.89
98.56
-65.89
我尝试将其转换为float
,然后将其转换为integer
。我也试过floor
命令,这不适用于我的情况,没有任何成功。我总是收到语法错误消息。我相信没有办法做到这一点
答案 0 :(得分:1)
SELECT p7.pa_value=CASE WHEN LEFT( p7.pa_value,1)='-' THEN '-' +
CONVERT(varchar(max),CONVERT(float,substring(p7.pa_value,4,4))/100) ELSE
CONVERT(varchar(max),CONVERT(float,substring(p7.pa_value,3,4))/100) END
FROM <table_name>
正在做什么......
答案 1 :(得分:0)
如果你知道逗号之后总有四位数字,你可以使用它,虽然我不相信它是完美的:
CONVERT(NUMERIC(9,2), REPLACE(REPLACE(p7.pa_value, '%', ''), ',', '')) / 100