declare @sql_gg varchar(255)
set @sql_gg='1b2d3*45345'
 
select left(@sql_gg,charIndex('*',@sql_gg)-1)) as test结果:
test
----
123
--我要截取的是字符串   "*"以前的数字

解决方案 »

  1.   

    抄一个过来~~~create function fn_num(
    @s varchar(2000)
    )
    returns varchar(200)
    as 
    begin
       declare @r varchar(200)
       set @r=''
       while PATINDEX('%[0-9]%',@s)>0
       begin
          set @r=@r+substring(@s,PATINDEX('%[0-9]%',@s),1)
          set @s=stuff(@s,1,PATINDEX('%[0-9]%',@s),'')
       end
       return @r
    end
    go--调用
    select dbo.fn_num('a2h5我j8 ')
    godrop function fn_num
    go
      

  2.   

    create function fn_num(
    @s varchar(2000)
    )
    returns varchar(200)
    as 
    begin
       set @s= left(@s,charIndex('*',@s)-1) -- 加多这一行   declare @r varchar(200)
       set @r=''
       while PATINDEX('%[0-9]%',@s)>0
       begin
          set @r=@r+substring(@s,PATINDEX('%[0-9]%',@s),1)
          set @s=stuff(@s,1,PATINDEX('%[0-9]%',@s),'')
       end
       return @r
    end
    go--调用
    select dbo.fn_num('1b2d3*45345')
    godrop function fn_num
    go