列名
04#02#日期
03#123#时间
06#1234#asdasd结果
A   B  
04  02
03  123
06  1234想把#号前的提取,#之间的提取出来分别成生一新列;

解决方案 »

  1.   

    select left(列名,charindex('#',列名)-1) , 
           substring(列名, charindex('#',列名)+1, charindex('#',列名,charindex('#',列名)+1) - charindex('#',列名) - 1) 
    from tb
      

  2.   

    create table tb(列名 varchar(20))
    insert into tb values('04#02#日期') 
    insert into tb values('03#123#时间') 
    insert into tb values('06#1234#asdasd')
    goselect col1 = left(列名,charindex('#',列名)-1) , 
           col2 = substring(列名, charindex('#',列名)+1, charindex('#',列名,charindex('#',列名)+1) - charindex('#',列名) - 1) 
    from tb
    where charindex('#',列名) > 0 and charindex('#',列名,charindex('#',列名)+1) > 0drop table tb/*
    col1                 col2                 
    -------------------- -------------------- 
    04                   02
    03                   123
    06                   1234(所影响的行数为 3 行)
    */
      

  3.   

    select
    col=left(col,charindex('#',col)-1),
    col2=substring(col,charindex('#',col)+1,charindex('#',col,charindex('#',col))-charindex('#',col)+1)
    from 
    t
      

  4.   

    select substring('列名',1,charindex('#','列名')-1),substring() A,
    substring(substring('列名',charindex('#','列名')+1,len('列名')),1,
    charindex('#',substring('列名',charindex('#','列名')+1,len('列名')))-1)B
    from 表名
      

  5.   

    create table tb(列名 varchar(20))
    insert into tb values('04#02#日期') 
    insert into tb values('03#123#时间') 
    insert into tb values('06#1234#asdasd')
    go--方法一:
    select col1 = left(列名,charindex('#',列名)-1) , 
           col2 = substring(列名, charindex('#',列名)+1, charindex('#',列名,charindex('#',列名)+1) - charindex('#',列名) - 1) 
    from tb
    where charindex('#',列名) > 0 and charindex('#',列名,charindex('#',列名)+1) > 0--方法二:
    select col1 = PARSENAME(replace(replace(列名,'#','.'),'#','.'),3), 
           col2 = PARSENAME(replace(replace(列名,'#','.'),'#','.'),2) 
    from tbdrop table tb/*
    col1                 col2                 
    -------------------- -------------------- 
    04                   02
    03                   123
    06                   1234(所影响的行数为 3 行)
    */
      

  6.   

    declare @T  table (col varchar(200))
    insert into @T values('04#02#日期') 
    insert into @T values('03#123#时间') 
    insert into @T values('06#1234#asdasd')
    select 
    col=left(col,charindex( '#',col)-1),
    col2=left(stuff(col,1,charindex('#',col),''),charindex('#',stuff(col,1,charindex('#',col),''))-1)
    from 
    @t
    select 
    col=left(col,charindex( '#',col)-1),
    col2=substring(col,charindex( '#',col)+1,charindex( '#',col,charindex( '#',col)+1)-charindex( '#',col)-1) 
    from   
    @t
      

  7.   

    如何提取下列内容; (年份) 第(数字)号
      列名 
    (2003)阿党字第00005号 
    (2004)阿第00058号 
    (2006)第00123号 
    (2006)sdfad第0012号 
    结果: 
    年度         编号 
    03           5 
    04           58 
    06           123 
    06           12