一个字段,存多个信息比如dede中的文章的flag字段,存“a,b,c,d,e,f”字串信息多个信处,表示图片,推荐,重点等查询时如何处理呢?比如,我想查询含b的记录?再如,我想查询同时含c,d,e的记录?

解决方案 »

  1.   

    后台数据类型为
    set('c', 'h', 'p', 'f', 's', 'j', 'a', 'b')
      

  2.   

     自定义属性:    头条[h]推荐[c]图片[p]幻灯[f]滚动[s]跳转[j]图文[a]加粗[b] 
    发贴时是复选框,可以多选
      

  3.   

    用 这个吧,可以试试看吧
    SELECT * from dede where FIND_IN_SET('b',flag);
      

  4.   

    手边没有 mysql 环境,只好贴手册了对于包含超过一个 SET 成员的值,当你插入值时,无所谓以什么顺序列出成员。也无所谓给出的值被列举了多少次。当以后检索该值时,在值中的每个成员将出现一次,根据他们在表创建时所指定的顺序列出成员。例如,如果一个列被定义为 SET("a","b","c","d"),那么,"a,d"、"d,a" 和 "d,a,a,d,d" 在被检索时均将被视为 "a,d"。 如果将一个不支持的值赋于一个 SET 列,该值将被忽略。 SET 以数字顺序排序。NULL 值排在非 NULL SET 值之前。 通常,可以使用 LIKE 操作符或 FIND_IN_SET() 函数执行在一个 SET 列上的 SELECT: mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
    mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;但是,下列示例也可以工作: mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
    mysql> SELECT * FROM tbl_name WHERE set_col & 1;第一个语句寻找一个精确的匹配。第二个语句寻找包含第一个集合成员的值。 如果希望得到一个 SET 列的所有可能值,可以使用 SHOW COLUMNS FROM table_name LIKE set_column_name 并分析第二列的 SET 定义。 
      

  5.   

    模乎查询几次就可以了嘛!like '%a,%' and linke '%b,%'我是这么想的,不知道有没有更好的方法!
      

  6.   

    直接查询标签例如、[d]但是,如果想要查询整个标签内容例如[b]...就比较复杂了,单纯用mysql应该很难实现。
      

  7.   

    保证顺序。
    SELECT flag from t where flag like "%c%d%e" ;
      

  8.   


    是的,有个项目想整合DEDEDEDE在标志一个文章是头条,重点,推荐,图片等属性是用一个字段表示的,我看是枚举型这个字段可以存多个枚举值,查询时,也查这个字段比如:我想查既是推荐,又有图片,又是重点的文件,要从这个字段按条件检索!
      

  9.   

    对,按照你set类型字符的顺序。
      

  10.   


    老大,能详解一下面三个吗?mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;//什么意思mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';    //这个是枚?有顺序要求吗?mysql> SELECT * FROM tbl_name WHERE set_col & 1;      //什么意思