现在有一个字串列表 如:'1','2','3','4','5'请问怎么样写一句SQL让他在查询分析器显示出来是     列1
行1 | 1
行2 | 2
行3 | 3
行4 | 4
行5 | 5这种格式,谢谢

解决方案 »

  1.   

    給個例子給你參考一下...自已看懂了,就會得到結果了...
    ------------------------------------------------------------
    use pubs
    if exists(select * from sysobjects where name='Tb' and xtype='U') drop table Tb
    if exists(select * from tempdb..sysobjects where name like'#tmp%') drop table #tmp
    -------生成表及表内数据-------------
    CREATE TABLE Tb(a int ,b varchar(100))
    INSERT TB SELECT 9258,'LBQR|LB'
    UNION ALL SELECT 888,'CCC'
    UNION ALL SELECT 92587, 'A|19|1'
    SELECT * FROM Tb
    GO
    --表变量@Tbl  保存分解后的结果集
    --临时表#tmp 用于临时计算
    Declare @Tbl table(a int ,b varchar(100)) --用来存放结果--按是否需要分隔将表分类两类(B字段是否包含'|')
    INSERT INTO @Tbl SELECT * FROM TB WHERE b NOT LIKE '%|%' --将无须分隔的放入结果集@TB
    SELECT * INTO #TMP FROM TB WHERE b LIKE '%|%' --需要分隔分隔的,暂存临时表,用于运算--对需要分折的记录进行运算
    WHILE EXISTS(SELECT * FROM #TMP WHERE B LIKE '%|%')
    BEGIN
    --从左向右取出分隔符之前的数据,写入至结果集@Tbl;并截掉|之前的数据
    insert into @Tbl select a,left(b,charindex('|',b,1)-1) from #tmp
    update #tmp set b=right(b,len(b)-charindex('|',b,1))
    --如果进行如上操作后,剩余字符串无法分隔时追加到结果集@Tbl;同时在临时表中删除这部分数据
    insert into @Tbl select * from #tmp where b not like '%|%'
    Delete #Tmp where b not like '%|%'
    ENDselect * from @Tbl order by a
    GO
    --删除临时用表
    DROP TABLE Tb,#tmp
      

  2.   

    原表:
    a           b                                                                                                    
    ----------- ---------------------------------------------------------------------------------------------------- 
    9258        LBQR|LB
    888         CCC
    92587       A|19|1使用上述語句分拆後的:a           b                                                                                                    
    ----------- ---------------------------------------------------------------------------------------------------- 
    888         CCC
    9258        LBQR
    9258        LB
    92587       19
    92587       1
    92587       A(所影响的行数为 6 行)
      

  3.   


    declare @sql nvarchar(4000)
    set @sql='''1'',''2'',''3'',''4'',''5'''
    set @sql=N'select ''行''+col,col [列1] from (select '+replace(@sql,',',N' [col] union all select ')+') a'
    exec (@sql)
    /*
         列1   
    ---- ---- 
    行1   1
    行2   2
    行3   3
    行4   4
    行5   5
    */