declare @tab table(id int,infomemo varchar(50))
insert @tab values(1,'aaa >>bbb >>44re')
insert @tab values(2,'aaa >>ccccccc >>sdf')
insert @tab values(3,'aaa >>dddd1 >>23trfd')
insert @tab values(4,'aaa >>eeee >>dfsdfsdf')--select * from @tabselect id,substring(infomemo,0,charindex('>>',infomemo,7)) from @tab

解决方案 »

  1.   

    select id,substring(infomemo,0,charindex('>>',infomemo,7)-1) from @tab
      

  2.   

    charindex('>>',infomemo,7)
    这里不一定是固定的位数7,我只是作为一个表示,没有描述清楚
    id     infomemo1      1223423 >>bbb >>44re
    2      312323 >>ccccccc >>sdf
    3      aaa >>dddd1 >>23trfd
    4      dfhgfdffddsddfg >>eeee >>dfsdfsdf希望得到id     infomemo1      1223423 >>bbb
    2      312323 >>ccccccc
    3      aaa >>dddd1
    4      dfhgfdffddsddfg >>eeee
      

  3.   

    /*我觉得楼上的方法不安全
    例如,表中的如下数据:5 aaabbbbbbbbb >>eeee >>dfsdfsdf
    你不知道第一个>>大概在哪里出现。
    所以,我想还是用两个charindex比较安全。
    不过,这种方法比较繁琐。不知道,有没有什么好办法。
    */
    declare @tab table(id int,infomemo varchar(50))
    insert @tab values(1,'aaa >>bbb >>44re')
    insert @tab values(2,'aaa >>ccccccc >>sdf')
    insert @tab values(3,'aaa >>dddd1 >>23trfd')
    insert @tab values(4,'aaa >>eeee >>dfsdfsdf')
    select id,substring(infomemo,0,charindex('>>',
      infomemo, 2+charindex('>>',infomemo,0)))
    from @tab
      

  4.   

    如果你要问找出第3个, 第4个的话,那上面的方法写起来就比较麻烦了.这个时候,你可以写一个UDF,通过一个循环来实现.