select substring([Nreg],charindex('|||',[Nreg],0)+3,2)

解决方案 »

  1.   

    select replace([Nreg],[Nreg],'viti')
      

  2.   

    select substring([Nreg],charindex('|||',[Nreg],0)+3,2)
    select substring([Nreg],(charindex('|||',[Nreg])+3),charindex('|||',[Nreg],charindex('|||',[Nreg])+3)+3)
    from 表
    試試
      

  3.   

    楼上两位说的方法是可以,不过中间那个值,不固定长度啊!例如这种:  3455|||first|||开通||| ,怎么办呢?
      

  4.   

    如果字段[Nreg]的每个记录值都是‘1256|||vi|||开通||| ’类型 格式固定且长度相同
    那么取值直接用  substring([Nreg],8,2)但要是每个字段值如: 1256|||vi|||开通|||,18856|||ti|||开通||| 或者连接更多相同结构的
    我想是要写算法了! 
    如果就象你列出的这么特殊  那么直接用substring()也可以
      

  5.   

    talantlee 说的方法好象把后面的也取出来了ti|||开通|||
      

  6.   

    象变长的情况 ,如:
    declare @a varchar(20)
    set @a='1256|||vi3453|||开通|||'
    select substring(@a,(charindex('|||',@a)+3), 
    charindex('|||',@a,charindex('|||',@a)+3)-charindex('|||',@a)-3)