说来说去就是那几个函数
select *
from tablename
where (charindex('-', columnname) = 0 and columnname = '6') or (charindex('-', columnname) > 0 and left(columnname, charindex('-', columnname) - 1) = '6')

解决方案 »

  1.   

    楼主这样试一下。select *
    from tablename
    where left(columnname, charindex('-', columnname) - 1) = '6'union allselect * from tablename where charindex('-', columnname)=0 and left(columnname,1) ='6'
      

  2.   

    ... where 字段 like '6-%'
      

  3.   

    select *
    from tablename
    where left(columnname, case charindex('-', columnname) when 0 then 1 else charindex('-', columnname)-1 end ) = '6'
      

  4.   

    declare @t table (c varchar(1000))
    insert @t 
     select '1' union 
     select '6-7-8-9' union 
     select '10-11-12-13' union 
     select '111-2323-8998'
    select rtrim(c)
    from @t
    where right(left(c, charindex('-', c+'-') - 1),1) = '1'/*                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    ---------------------
    1
    111-2323-8998
    */
      

  5.   

    select *
    from tablename
    where left(columnname, charindex('-', columnname) - 1) = '6' and charindex('-', columnname) > 0
      

  6.   

    declare @t table (c varchar(1000))
    insert @t 
     select '1' union 
     select '6-7-8-9' union 
     select '10-11-12-13' union 
     select '121-2323-8998'
    select rtrim(c)
    from @t
    where right(left(c, charindex('-', c+'-') - 1),1) = '1'--------------------------这个也不是楼主想要的 因为把 '121-2323-8998' 也选出来了 
      

  7.   

    应该要写个自定义函数来判断吧。
    因为包含的算法用现有的SQL函数实现不了,关键就是 区别第一个'-'前面的
    字符串是否所有单个字符都是同一个字符组成的情况
    如:'121'和'111'就是不同的