Select Col1,Left(Col2,CharIndex('|',col2)-1) As Col2 from TableName
Union All
Select Col1,Stuff(Col2,1,CharIndex('|',col2),'') from TableName
Order By col1,col2

解决方案 »

  1.   

    select col1,col2=left--示例
    --示例数据
    create table tb(col1 varchar(10),col2 varchar(10))
    insert tb select 'A','x|y'
    union all select 'B','m|n'
    go--查询
    select col1,col2=left(col2,charindex('|',col2+'|')-1) from tb
    union all
    select col1,col2=stuff(col2,1,charindex('|',col2+'|'),'') from tb where charindex('|',col2)>0
    order by col1
    go--删除测试
    drop table tb/*--结果
    col1       col2    
    ---------- --------
    A          x
    A          y
    B          n
    B          m(所影响的行数为 4 行)
    --*/
      

  2.   

    --示例
    --示例数据
    create table tb(col1 varchar(10),col2 varchar(10))
    insert tb select 'A','x|y'
    union all select 'B','m|n'
    go--查询
    select col1,col2=left(col2,charindex('|',col2+'|')-1) from tb
    union all
    select col1,col2=stuff(col2,1,charindex('|',col2+'|'),'') from tb where charindex('|',col2)>0
    order by col1,col2
    go--删除测试
    drop table tb/*--结果col1       col2   
    ---------- -------
    A          x
    A          y
    B          m
    B          n(所影响的行数为 4 行)
    --*/
      

  3.   

    --建立测试环境
    Create Table TEST
    (col1 Varchar(10),
     col2 Varchar(10))
    --插入数据
    Insert TEST Values('A',               'x|y')
    Insert TEST Values('B',               'm|n')
    --测试
    Select Col1,Left(Col2,CharIndex('|',Col2)-1) As Col2 from TEST
    Union All
    Select Col1,Stuff(Col2,1,CharIndex('|',Col2),'') from TEST
    Order By Col1,Col2
    --删除测试环境
    Drop Table TEST
    --结果
    /*
    Col1 Col2
    A x
    A y
    B m
    B n
    */