表a   字段b varchar
使用SELECT语句
select * form a where b like %我是yxd1984gz%
怎样截取“我是yxd1984gz”及其前后若干个字符,或得到“我是yxd1984gz”在b中的位置?

解决方案 »

  1.   

    select charindex('我是yxd1984gz',b)  from a where b like '%我是yxd1984gz%'
      

  2.   

    declare @t varchar(100)
    set @t='yxd1984gz11111111111'select charindex('yxd1984gz',@t)select patindex('%yxd1984gz%',@t)
      

  3.   

    “我是yxd1984gz”在b中的位置
    --------------------------------------
    select charindex('我是yxd1984gz',b) as 位置 from a where b like '%我是yxd1984gz%'
      

  4.   

    select charindex('我是yxd1984gz',b)  from a where b like '%我是yxd1984gz%'
      

  5.   

    能不能截取“我是yxd1984gz”及其前后各10个字符?
      

  6.   

    declare @t varchar(100)
    set @t='1111111111111111100000我是yxd1984gz1234567890100000000'select substring(@t,charindex('我是yxd1984gz',@t)-10,10),
           substring(@t,charindex('我是yxd1984gz',@t)+len('我是yxd1984gz'),10),
           substring(@t,charindex('我是yxd1984gz',@t)-10,len('我是yxd1984gz')+20)
      

  7.   

    declare @t varchar(100)
    set @t='1111111111111111100000我是yxd1984gz1234567890100000000'select substring(@t,charindex('我是yxd1984gz',@t)-10,10),
           substring(@t,charindex('我是yxd1984gz',@t)+len('我是yxd1984gz'),10),
           substring(@t,charindex('我是yxd1984gz',@t)-10,len('我是yxd1984gz')+20)
    这里还要判断charindex('我是yxd1984gz',@t)-10是否为负数,如果为负数,应该换算为0,长度就不应该取10。