我有一列的值为  title
  aaaa,bb,cc
  bb,ff,gg
  ii现在想截取成这样
   aaaa          bb       cc
   bb            ff       gg
   ii   也就是分成了3个字段了
请根据“,”来取因为需求可能会是 要第2个逗号之前且第一个逗号之后的内容
所以根据逗号来判别更好!

解决方案 »

  1.   

    use tempdb
    go
    create table #1 (name varchar(50))
    insert #1 select 'title' union all
    select 'aaaa,bb,cc' union all
    select 'bb,ff,gg' union all
    select 'ii'select * from #1select col1=case when charindex(',',name)>0 then left(name,charindex(',',name)-1) 
                else name end ,
           col2=case when charindex(',',name)>0 then left(stuff(name,1,charindex(',',name),''),charindex(',',stuff(name,1,charindex(',',name),''))-1)
                else '' end,
           col3=case when charindex(',',name)>0 then reverse(left(reverse(name),charindex(',',reverse(name))-1))
                else '' end
    from #1 
      

  2.   

    if object_id('tempdb..#tb') is not null
    drop table #tb
    go
    create table #tb (title varchar(50))  
    go
    insert into #tb select 'aaaa,bb,cc' 
          union all select 'bb,ff,gg'
          union all select 'ii'
    go
    select
    title1 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))+1),
    title2 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))),
    title3 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))-1),
    title4 = parsename(replace(title,',','.'), len(title) - len(replace(title,',',''))-2)
    from #tb/*
    title1         title2         title3         title4
    -------------- -------------- -------------- -------------- 
    aaaa           bb             cc             NULL
    bb             ff             gg             NULL
    ii             NULL           NULL           NULL(3 行受影响)
    */
      

  3.   

    逗号少的话用
    PARSENAME函数
    多的话写函数