传递参数:
站点名称、站点简称、站点全拼,都是以‘-’分割连接,如:新区分公司-工业园二号门-生活中心-行创四路-行创三路-工业园一号门,
xqfgs-gyyehm-shzx-xcsl-xcsl-gyyyhm,
xinqufengongsi-gongyeyuanerhaomen-shenghuozhongxin-xingchuangsilu-xingchuangsanlu-gongyeyuanyihaomen要求:如果表中存在同名的站点名称 则这条不插入,如已经存在 新区分公司 则对应 新区分公司、xqfgs、xinqufengongsi 三列不插入表
简拼和全拼可以重名然后根据这三个参数以‘-’分割然后插入表中表中对应三列:zname、jp、qp 效果:zname         jp        qp
新区分公司   xqfgs   xinqufengongsi
工业园二号门 gyyehm  gongyeyuanerhaomen
.
.
.

解决方案 »

  1.   

    就是create一个函数 然后通过那三个参数插入到表中
      

  2.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    create table [tb]([zname] varchar(20),[jp] varchar(20),[qp] varchar(20))--存储过程
    create proc dbo.getpart @zname varchar(8000),@jp varchar(8000),@qp varchar(8000)
    as
    begin
    declare @col1 table(id int identity(1,1),zname varchar(20))
    insert into @col1
    select substring(@zname,number,charindex('-',@zname+'-',number)-number)
    from master..spt_values 
    where type='p' 
    and substring('-'+@zname,number,1)='-' declare @col2 table(id int identity(1,1),jp varchar(20))
    insert into @col2
    select substring(@jp,number,charindex('-',@jp+'-',number)-number)
    from master..spt_values 
    where type='p' 
    and substring('-'+@jp,number,1)='-' declare @col3 table(id int identity(1,1),qp varchar(20))
    insert into @col3
    select substring(@qp,number,charindex('-',@qp+'-',number)-number)
    from master..spt_values 
    where type='p' 
    and substring('-'+@qp,number,1)='-'

    insert into tb
    select t.zname,r.jp,h.qp
    from @col1 t,@col2 r,@col3 h
    where t.id=r.id and t.id=h.id
    and t.zname not in (select zname from tb)end
    --执行
    exec getpart '新区分公司-工业园二号门-生活中心-行创四路-行创三路-工业园一号门', 
    'xqfgs-gyyehm-shzx-xcsl-xcsl-gyyyhm', 
    'xinqufengongsi-gongyeyuanerhaomen-shenghuozhongxin-xingchuangsilu-xingchuangsanlu-gongyeyuanyihaomen'
    --结果
    select * from tb
    --------------------------
    新区分公司 xqfgs xinqufengongsi
    工业园二号门 gyyehm gongyeyuanerhaomen
    生活中心 shzx shenghuozhongxin
    行创四路 xcsl xingchuangsilu
    行创三路 xcsl xingchuangsanlu
    工业园一号门 gyyyhm gongyeyuanyihaomen
      

  3.   

    create 前面 go 你掉了 谢了 等下结贴
      

  4.   


    create table #tb(zname nvarchar(20),jp nvarchar(20),qp nvarchar(20));declare @c1 nvarchar(max),@c2 nvarchar(max),@c3 nvarchar(max);
    set @c1=N'新区分公司-工业园二号门-生活中心-行创四路-行创三路-工业园一号门';
    set @c2=N'xqfgs-gyyehm-shzx-xcsl-xcsl-gyyyhm';
    set @c3=N'xinqufengongsi-gongyeyuanerhaomen-shenghuozhongxin-xingchuangsilu-xingchuangsanlu-gongyeyuanyihaomen';
    while LEN(@c2)>0 and charindex(N'-',@c2)>0
    begin
     insert into #tb
     select left(@c1,charindex(N'-',@c2)-1),
     left(@c2,charindex(N'-',@c2)-1),
     left(@c3,charindex(N'-',@c3)-1);
     set @c1=right(@c1,len(@c1)-charindex('-',@c1));
     set @c2=right(@c2,len(@c2)-charindex('-',@c2));
     set @c3=right(@c3,len(@c3)-charindex('-',@c3));
    end
    insert into #tb select @c1,@c2,@c3;select * from #tb
    drop table #tb
    /*
    新区分公司 xqfgs xinqufengongsi
    工业园二号门 gyyehm gongyeyuanerhaomen
    生活中心 shzx shenghuozhongxin
    行创四路 xcsl xingchuangsilu
    行创三路 xcsl xingchuangsanlu
    工业园一号门 gyyyhm gongyeyuanyihaomen
    */
      

  5.   

      友情...UP..UP...UP 
       貌似迟了   
      嘿嘿 
      

  6.   

    --or
    alter proc dbo.getpart @zname varchar(8000),@jp varchar(8000),@qp varchar(8000)
    as
    begin
    declare @pos int
    select @zname=@zname+'-',@jp=@jp+'-',@qp=@qp+'-'
    select @pos = charindex('-',@zname)
    while @pos >0
    begin
    if not exists(select 1 from  tb where zname=substring(@zname,1,@pos-1))
    begin
    insert into [tb]
    select substring(@zname,1,@pos-1),
    substring(@jp,1,charindex('-',@jp)-1),
    substring(@qp,1,charindex('-',@qp)-1)
    end
    select @zname = stuff(@zname,1,@pos,'')
    select @jp = stuff(@jp,1,charindex('-',@jp),'')
    select @qp = stuff(@qp,1,charindex('-',@qp),'')
    select @pos = charindex('-',@zname)
    endend