表里有一个字段里有下面的数据 1,2,3,4,5,6,7,8,9.  也就是把一个数组存到了表里.每个里面的都不同,现在想SELECT出所有包含2,9的数据.知道可以用LIKE来写 但是这里不一定就是2和9  也许可能是其他的好多数字.就是有一个属性(大概有18项) 每个人是占有其中的某几个(比如 3,4,9)这样. 现在想SELECT出符合指定的几个属性的所有数据. 有比较高效的便于合成的SQL语句么?

解决方案 »

  1.   

    貌似楼主要把那个字段作为权限分配
    假如是那样 本人有更好的办法
    不过还是先按你的思路来做
    select * from tablename where charindex('3',columnname)>1 and charindex('4',columnname)>1 and charindex('9',columnname)>1 
    假如你想要高效点的解决方法,就应该把这个字段改为int,int是32bit长度 每一个bit可以代表你所说的1个数字或者字母比如 0x1代表1 0x3 就代表 1,2
    假如你要判断 这个字段是否包含 
    第3,4,9这几个权限 那么就用
    select * from tablename where columnname & 0x1c=0x1c
      

  2.   


    要先按每个人分组group by吧,再select 出所要的属性组的数据.