已知字段:
RegNum varchar 50
本字段现在有N条记录如下:024902
001220
000220
000032
000002想在要写一个函数或存储过程得到如下结果:
24902
1220
220
32
2
也就是去掉字段中数字前面的所有带0的字符,并转换为数字类型,谢谢!

解决方案 »

  1.   

    declare @t table(col varchar(20))
    insert @t values('024902')
    insert @t values('001220')
    insert @t values('000220')
    insert @t values('000032')
    insert @t values('000002')select stuff(col,1,patindex('%[1-9]%',col)-1,'') from @t/*
    24902
    1220
    220
    32
    2(所影响的行数为 5 行)
    */
      

  2.   


    select cast('00002' as int)2
      

  3.   

    select cast(RegNum as int) as RegNum from table1;
      

  4.   

    declare @t table(col varchar(20))
    insert @t values('024902')
    insert @t values('001220')
    insert @t values('000220')
    insert @t values('000032')
    insert @t values('000002')declare @tt table(col int)
    insert @tt select col from @tselect * from @tt/*
    col         
    ----------- 
    24902
    1220
    220
    32
    2(所影响的行数为 5 行)*/
      

  5.   


    declare @t table(col varchar(20))
    insert @t values('024902')
    insert @t values('001220')
    insert @t values('000220')
    insert @t values('000032')
    insert @t values('000002')select cast(col as int) from @t----------- 
    24902
    1220
    220
    32
    2(所影响的行数为 5 行)
      

  6.   

    也可以这样:
    select convert(int,RegNum) as RegNum from table1;
      

  7.   

    楼上的方法都可以,问题是以前用户输入了一些错误数据,比如
    asdf
    0001
    结果我select cast(regnum as int) from rollreg 这样的时候就报错了
    将 varchar 值 'dfdf' 转换为数据类型为 int 的列时发生语法错误。有方法可以消除这个错误了吗
      

  8.   

     这样就可以把包含非数字字符的记录过滤掉select cast(regnum as int) from rollreg where isnumeric(regnum)=1
      

  9.   

    select   cast(replace(regnum,'.','')   as   int)  as regnum   from   rollreg   where   isnumeric(regnum)=1这样可以,^_^不用replace(regnum,'.','') 去掉带。的字符的话,用isnumeric(regnum)=1一样也有错误
      

  10.   

    :)
    select cast(cast('2.71' as decimal) as int)
      

  11.   

    sdhylj 方法很巧妙^_^select   cast(regnum  as   decimal )  as regnum   from   rollreg   where   isnumeric(regnum)=1