我有个表A,里面有个name(char)字段,如果name里内容只是aa或bb的内容,那我查询的时候直接select * from A where name='aa';就能查找出所有符合字段name内容aa的记录了
现在我name的内容是由a,b,c组成,我要查找的记录是a,b,c或a,c,b等等,就是abc不管顺序是否混乱都符合name的内容a,b,c,这个查询要怎么写啊?

解决方案 »

  1.   


    select * from A where `name` regexp '[abc]{3}'
      

  2.   

    楼上的正则可以匹配aaa,bbb这样的,不知道你是否要求要去掉,只能匹配abc这样的?
      

  3.   

    支持:
    select * from A where `name` regexp '[abc]{3}'
    如果有要求要去掉aaa,bbb,则再加相应规则
      

  4.   

    我字段里有限制的,提交的时候最多(a,b,c),也可以是(a,b)或(a)的,我现在的情况是想输入一个条件(a,b,c),查询得出的记录需要包括(a,b,c)、(a,c,b)、(b,c,a)、(b,a,c)、(c,a,b)、(c,b,a)这些都符合
      

  5.   

    只能要abc只有六种情况,枚举了算了
    select   *   from   A   where   `name`   regexp 'abc|acb|bac|bca|cab|cba'
      

  6.   

    楼上的谢谢啊,可是我提交查询的时候根本不知道那个变量是多少啊
    上面的只是举个例子咯
    那现在:
    id   name
    1    a,b,c
    2    a,b
    3    a,c,b
    4    b,a
    如果我在查询框里输入a,b 那需要符合查询的记录:id是2和4; 如果输入的是b,c,a,那符合条件的记录:id是1和3;
    如果输入的是a,就没有符合的记录
    这种方法能实现吗?
      

  7.   

    有个笨方法,就是游标取表内的每一行的字段name赋给一变量,然后拆分字符串,看是不是每个字母都在查询框中输入的字段中包含,肯定可以实现,就是麻烦,期待高人.
      

  8.   

    select * from a where LENGTH(name) = LENGTH('ab') and name like '%b%' and name like '%a%';
      

  9.   

    mShopping这个不对啊,如果我有(c,d,e),(e,f)等等的记录的时候呢?
      

  10.   

    呵呵,那是假设你只有a,b,c输入的情况下完成的。如果要考虑全的话,sql是完不成的吧。你用其它程序设计语言合在一起才可以完成你的要求了.
      

  11.   

    那个谢谢啊
    我那个用的是php的
    那先接贴吧