我有一个名为pa_value
的字段,保留varchar
条记录
现在,此字段包含以下记录:
- 0.5582%
- 0.6985%
- -0.1589%
- 0.9856%
- -0.6589%
我使用以下代码获得这些结果:
CAST (replace (p7.pa_value ,'%','') AS float (3,0)) as TotalMargin
我要做的是删除所有内容,只留下2个字符(如果字符串前面有一个 - (减号),则为3个字符)。 它应该是这样的:
- 55
- 69
- -15
- 98
- -65
我尝试将其转换为float
,然后将其转换为integer
。我也试过floor
命令,这不适用于我的情况,没有任何成功。我相信没有办法做到这一点
答案 0 :(得分:3)
SELECT CAST((columnName * 100) as INTEGER) NewValue
FROM TableName;
答案 1 :(得分:1)
答案 2 :(得分:1)
这应该有效:
SELECT
CAST( CASE WHEN LEFT(VALUE, 1) = '-' THEN '-' ELSE '' END
+ SUBSTRING(
Value,
CASE WHEN LEFT(VALUE, 1) = '-' THEN 4 ELSE 3 END,
2)
AS INT) AS TotalMargin
FROM TableName
答案 3 :(得分:0)
试试这个
UPDATE [SomeTable]
SET p7.pa_value =
(CASE
WHEN LEN(LTRIM(p7.pa_value)) > 8
THEN CAST(RIGHT(p7.pa_value, LEN(p7.pa_value) - 2) AS NUMERIC(10, 2))
ELSE CAST(LTRIM(p7.pa_value) AS NUMERIC(10, 2))
END);
GO
这将检查字符串是否具有前导不需要的“ - ”并相应地处理每个案例。
我希望这会有所帮助。