表数据如下:
id   conten
1    张三|2500|三年|佛山|1988|群众
2    李四|3500|两年|广州|1988|群众
3    王五|1500|无|北京|1988|群众
4    马六|4500|五年|上海|1988|群众
怎么用sql获取字段conten里的地方名,得到id    conten
1     佛山
2     广州
3     北京
4     上海

解决方案 »

  1.   

    用substring(),len(),charindex(),reverse()函数
      

  2.   

    create table b2
    (
    conten nvarchar(100)
    )
    insert into b2 values('张三|2500|三年|佛山|1988|群众')
    go
    select substring(conten,charindex('年',conten)+2,2) from b2
      

  3.   


    create table kcx
    (id int, conten varchar(50))insert into kcx
     select 1, '张三|2500|三年|佛山|1988|群众' union all
     select 2, '李四|3500|两年|广州|1988|群众' union all
     select 3, '王五|1500|无|北京|1988|群众' union all
     select 4, '马六|4500|五年|上海|1988|群众'
     select id,
           substring(conten,
                     charindex('|',conten,charindex('|',conten,charindex('|',conten,1)+1)+1)+1,
                     charindex('|',conten,charindex('|',conten,charindex('|',conten,charindex('|',conten,1)+1)+1)+1)+1
                     -(charindex('|',conten,charindex('|',conten,charindex('|',conten,1)+1)+1)+1)-1
                     ) 'conten'
    from kcx/*
    id          conten
    ----------- ---------------
    1           佛山
    2           广州
    3           北京
    4           上海(4 row(s) affected)
    */
      

  4.   

    create table #getContent
    (
     id int,
     content varchar(100)
    )insert into #getContent
    select 1 ,   '张三|2500|三年|佛山|1988|群众'
    union all
    select 2,   '李四|3500|两年|广州|1988|群众'
    union all
    select 3,    '王五|1500|无|北京|1988|群众'
    union all
    select 4 ,   '马六|4500|五年|上海|1988|群众' 
    select ID, 
       substring(
     substring(content,
       charindex('|',content,charindex('|',content,charindex('|',content,1)+1)+1)+1,
       LEN(content)
       ),
     1,
     CHARINDEX('|',content)-1
    )
     from #getContent