zoukankan      html  css  js  c++  java
  • 列的分拆显示

    create table ta(id int, name varchar(50))
    insert ta
    select 1,           'aa,bb'
    union all select 2,           'aaa,bbb,ccc'
    union all select 3,           'Aa,Bb,Cc,Dd'


    方法1通过游标实现:

    declare @tb table(id int, name varchar(50))--用表变量显示效果
    DECLARE @id int,@name varchar(50)
    DECLARE roy CURSOR
    FOR SELECT * from ta
    OPEN roy
    FETCH next FROM roy
    into @id,@name
    WHILE @@FETCH_STATUS = 0
    BEGIN
        while CHARINDEX(',',@name)>0
            begin
                INSERT   @tb  select @id,LEFT(@name,CHARINDEX(',',@name)-1)
                SET      @name=STUFF(@name,1,CHARINDEX(',',@name),'')  
            end
            insert @tb select @id,@name
            FETCH NEXT FROM roy into @id,@name
    end
    CLOSE roy
    DEALLOCATE roy
    select * from @tb

    方法2用表变量:
    declare @ta table(id int)--生成1—50递增的表变量
    declare @i int,@j int
    select @i=1,@j=50--定义字符的最大数量
    while @i!>@j
        begin
            insert @ta select @i
            select @i=@i+1
        end
    select a.id,
          显示列=substring(a.name,b.id,charindex(',',a.name+',',b.id)-b.id)
    from ta a,@ta b
    where substring(','+a.name,b.id,1)=','

    效果如下:


    id          name             
    ----------- ------------------
    1           aa
    1           bb
    2           aaa
    2           bbb
    2           ccc
    3           Aa
    3           Bb
    3           Cc
    3           Dd

    (所影响的行数为 9 行)

    --drop table ta

  • 相关阅读:
    [JavaScript权威指南]Introduce to JavaScript
    IT项目开发的75条管理守则
    .net调用存储过程
    应聘项目经理需要学的
    DropDownList静态数据绑定
    数据库的查询优化技术 (摘)
    UNION运算符
    网站项目策划书
    .net验证码
    小问题,关于Page.Request.QueryString["pro"]
  • 原文地址:https://www.cnblogs.com/Roy_88/p/5463115.html
Copyright © 2011-2022 走看看