如何将字符串转换为整数 - 奇怪的格式

时间:2012-11-14 09:37:05

标签: sql sql-server-2005

我有一个名为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命令,这不适用于我的情况,没有任何成功。我相信没有办法做到这一点

4 个答案:

答案 0 :(得分:3)

SELECT CAST((columnName * 100) as INTEGER) NewValue
FROM TableName;

答案 1 :(得分:1)

试试这个:

select cast(substring(col,0,charindex('.',col)+3) as float)*100 
from table1


SQl fiddle demo

答案 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

Fiddle-Demo

答案 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

这将检查字符串是否具有前导不需要的“ - ”并相应地处理每个案例。

我希望这会有所帮助。