时间:2020-05-24 10:33:51 | 栏目: | 点击:次
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));//新建表格
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
select col from myset;//索引值全部显示'a,d';
insert into myset (col) values('a,b,s');//会发出警告,并且s不会被插入到表格当中
select col from myset;
也可以使用find_in_set()或like修饰符来搜索set值。
mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
//第1个语句找出SET_col包含value set成员的行。第2个类似,但有所不同:它在其它地方找出set_col包含value的行,甚至是在另一个SET成员的子字符串中。
//下面的语句也是合法的:
mysql> SELECT * FROM tbl_name WHERE set_col & 1;
mysql> SELECT * FROM tbl_name WHERE set_col = 'val1,val2';
//第1个语句寻找包含第1个set成员的值。第2个语句寻找一个确切匹配的值。应注意第2类的比较。将set值与'val1,val2'比较返回的结果与同'val2,val1'比较返回的结果不同。指定值时的顺序应与在列定义中所列的顺序相同。
当然可以像对待字符串一样用link 不过,还是推荐使用FIND_IN_SET。