固话都是7位的吗?有没有是区号+固话的?

解决方案 »

  1.   

    drop function uf_splitstring
    go
    create function uf_splitstring
    (
    @str varchar(8000) --要分拆的字符串
    ,@spli varchar(10) --字符串分隔符
    )
    returns varchar(8000)
    as
    begin
    declare @rets varchar(8000)
    set @rets=''
    declare @retab table(istr varchar(8000))
    declare @i     int
    declare @splen int
    select @splen=len(@spli),@i=charindex(@spli,@str)
    while @i > 0
    begin
    insert into @retab 
    values(case when len(left(@str,@i-1))=7 then '6'+left(@str,@i-1) else left(@str,@i-1) end)
    select @str=substring(@str,@i+@splen,8000)
    select @i=charindex(@spli,@str)
    end
    if @str<>'' insert into @retab values(case when len(@str)=7 then '6'+@str else @str end)
    select @rets=@rets+','+istr from @retab
    set @rets=stuff(@rets,1,1,'')
    return @rets
    end
    go
    drop table A
    go
    create table A(F_Name varchar(10),F_phone varchar(2000))
    insert into A
    select 'aaa','8654521,1395899651'
    union all select 'bbb','8654521,8569854'
    union all select 'ccc','8659874'select F_Name,dbo.uf_splitstring(F_phone,',') as F_phone from A
    /*
    F_Name     F_phone                
    ---------- -----------------------
    aaa        68654521,1395899651
    bbb        68654521,68569854
    ccc        68659874(所影响的行数为 3 行)
    */