有char型字符31185090 我想转成3*185+1*90=645 就是第一位*3-5位数字,第二位*6-8位数字,
32050025 =3*50+2*25=200 注:32050025=3,2,050,025
32004001 =3*4+2*1=14

解决方案 »

  1.   

    declare @s varchar(10)
    set @s='32004001'
    select 
    cast(left(@s,1) as int)*
    cast(substring(@s,3,3) as int)*
    cast(substring(@s,2,1) as int)*
    cast(substring(@s,6,3) as int)
    /*
    -----------
    24(1 行受影响)*/
      

  2.   

    declare @s varchar(20)
    set @s='31185090'
    select cast(substring(@s,1,1) as int) * cast(substring(@s,3,3) as int)
    +  cast(substring(@s,2,1) as int) * cast(substring(@s,6,3) as int)
      

  3.   

    declare @s varchar(10)
    set @s='32004001'
    select 
    cast(left(@s,1) as int)*
    cast(substring(@s,3,3) as int)+
    cast(substring(@s,2,1) as int)*
    cast(substring(@s,6,3) as int)
    /*
    -----------
    14(1 行受影响)*/
      

  4.   

    declare @str as char(8)
    set @str='32004001'select cast(substring(@str,1,1) as int) * cast(substring(@str,3,3) as int) +
     cast(substring(@str,2,1) as int) * cast(substring(@str,7,3) as int) num--结果
    num         
    ----------- 
    645长度固定吗