用 这个吧,可以试试看吧 SELECT * from dede where FIND_IN_SET('b',flag);
手边没有 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 定义。
模乎查询几次就可以了嘛!like '%a,%' and linke '%b,%'我是这么想的,不知道有没有更好的方法!
老大,能详解一下面三个吗?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('c', 'h', 'p', 'f', 's', 'j', 'a', 'b')
发贴时是复选框,可以多选
SELECT * from dede where FIND_IN_SET('b',flag);
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 定义。
SELECT flag from t where flag like "%c%d%e" ;
是的,有个项目想整合DEDEDEDE在标志一个文章是头条,重点,推荐,图片等属性是用一个字段表示的,我看是枚举型这个字段可以存多个枚举值,查询时,也查这个字段比如:我想查既是推荐,又有图片,又是重点的文件,要从这个字段按条件检索!
老大,能详解一下面三个吗?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; //什么意思