dbo.FXDryBulbTemp
---------------
0239
0240
0200
0000
-080      
-082      
-092      
-093      
-110      
上面这个表的数据类型是varchar(50)
========================
DryBulbTemp
---------------
239
240
200
0
-80      
-82      
-92      
-93      
-110  
我想去除左边的0,如果是0000,就变成0,并且转换成int数据类型。

解决方案 »

  1.   

    select cast(DryBulbTemp as int) from fx
      

  2.   


    select cast(DryBulbTemp as int) from fx where isnumeric(DryBulbTemp)=1  --加where过滤掉非数字的记录
      

  3.   

    select case when  isnumeric(DryBulbTemp)=1  then ltrim(cast(DryBulbTemp as int)) else DryBulbTemp end from fx 
      

  4.   

    -------------------------------------
    --  Author : liangCK 梁爱兰
    --  Comment: 小梁 爱 兰儿
    --  Date   : 2009-08-14 15:43:10
    -------------------------------------
     
    --> 生成测试数据: @t
    DECLARE @t TABLE (DryBulbTemp VARCHAR(4))
    INSERT INTO @t
    SELECT '0239' UNION ALL
    SELECT '0240' UNION ALL
    SELECT '0200' UNION ALL
    SELECT '0000' UNION ALL
    SELECT '-080' UNION ALL
    SELECT '-082' UNION ALL
    SELECT '-092' UNION ALL
    SELECT '-093' UNION ALL
    SELECT '-110'--SQL查询如下:SELECT
        SIGN(CAST(DryBulbTemp AS INT)) * ABS(CAST(DryBulbTemp AS INT))
    FROM @T/*
    -----------
    239
    240
    200
    0
    -80
    -82
    -92
    -93
    -110(9 行受影响)*/
      

  5.   

    直接转换就行了。。
    CAST(DryBulbTemp AS INT)
      

  6.   

    select cast(substring(DryBulbTemp,charindex('0',DryBulbTemp),len(DryBulbTemp)) as int) from FX
      

  7.   


    想复杂了 而且还错误了 NND
      

  8.   

    我弄的时候就想过INT型会把0去掉,然后弄成字符型,呜
      

  9.   

    select DryBulbTemp*1 from dbo.fx
      

  10.   

    select DryBulbTemp*1 from dbo.fx这样行,真是高手,又学了一招!
      

  11.   


    CAST(DryBulbTemp AS INT)