一张数据表中某个字段A,存着  1,3,6,26,30  类似这样的数据,以逗号隔开.
 现在想检索它是否包含 6
这种数据要如何处理,。 如果用 A like '%6',
首先数据多的话,效率太低,而且数据也不完全确定,
 可能16,26,36......带6的数据会被查出,其实之前发过一次贴,但是当时是用access, 
select * from tablename where Instr(','+Tid+',',',3,')>0
 当时好像是可以用的,。...
现在换MSSQL,用CHARINDEX,但是跟like一样,16,26,36...之类的数据也会被查出.
select * from tablename WHERE CHARINDEX('2',','+Tid+',')>0数据库分割mssql

解决方案 »

  1.   

    select * from tablename WHERE CHARINDEX(',6,',','+Tid+',')>0
      

  2.   

    select * from tablename WHERE CHARINDEX(',2,',','+Tid+',')>0
      

  3.   

    select * from tablename WHERE CHARINDEX(',2,',','+Tid+',')>0',2,'--前后都加上分隔符
      

  4.   


    好吧,我好像有点进入误区了,...
     之前以为如果 2在最后一位就不能用,如 1,2    ...因为2后面没逗号.
    刚才试了,是可用的,跟 like不同,...
     现在在F1查阅...
      

  5.   

    Instr 里面你都晓得前后都加逗号,怎么换个函数就迷茫了
      

  6.   

    参考:  SQL split
    http://www.cnblogs.com/liye/archive/2010/11/01/1866339.html
      

  7.   

    select * from tablename
    where left(Tid,2)='6,'
        or Tid='6'
        or right(Tid,2)=',6'
        or Tid like '%,6,%'