传递一个TAG参数,值:Tag="电脑,CPU,主板,硬盘"
(
@Tag NVARCHAR(4000)
--@Tag="电脑,CPU,主板,硬盘"
)
AS
INSERT INTO
Tags(Tag)
VALUES(@Tag)怎么把@Tag的值截成:'电脑','CPU','主板','硬盘',逐条插入?

解决方案 »

  1.   

    declare @Tag varchar(1000),@sql varchar(8000)
    set @Tag='电脑,CPU,主板,硬盘'
    set @sql='select '''+replace(@Tag,',',''' union all select ''')+''''--创建测试:#Tags
    create table #Tags(Tag varchar(20))
    exec ('insert #Tags '+@sql)select * from #Tags/*
    Tag                  
    -------------------- 
    电脑
    CPU
    主板
    硬盘
    */--删除测试
    drop table #Tags
      

  2.   

    set @sql='select '''+replace(@Tag,',',''' union all select ''')+''''
    REPLACE是替换的功能
    也就是吧--@Tag="电脑,CPU,主板,硬盘" 字段里的‘,’替换掉了
    那麻烦“昨夜小楼”告知下SELECT这后面的'''和,后面的''''是什么意思好么
    谢谢~~
      

  3.   

    declare @Tag varchar(1000),@sql varchar(8000)
    set @Tag='电脑,CPU,主板,硬盘'set @sql='select '+replace(@Tag,',',' union all select ')
    print @sqlset @sql='select '''+replace(@Tag,',',''' union all select ''')+''''
    print @sql/*
    select 电脑 union all select CPU union all select 主板 union all select 硬盘
    select '电脑' union all select 'CPU' union all select '主板' union all select '硬盘'
    */
      

  4.   

    union的前面和select后面,都需要加一点最后还要加一点,所以最后+''''