MySQL8 SET数据类型
(已更新。。。)
SET:
多选字符串数据类型,适合存储“多个值”。
设定set的时候,同样需要设定“固定的几个值”;存储的时候,可以存储其中的若干个值。
设定set的格式:
字段名称 SET("选项1","选项2",...,'选项n')
同样的,set的每个选项值也对应一个数字,依次是1,2,4,8,16...,最多有64个选项
使用的时候,可以使用set选项的字符串本身(多个选项用逗号分隔),也可以使用多个选项的数字之和(比如:1+2+4=7)
-- 1、创建表 create table set_table( id int auto_increment primary key, hobby set('music','movie','swimming') ); -- 2、插入值 insert into set_table(hobby) values (1), (2), (3), (4), (5), (6), (7), ('music'), ('movie'), ('music,movie'), ('swimming'), ('music,swimming'), ('movie,swimming'), ('music,movie,swimming'); -- 前7行以选项数字格式插入,后7行以选项字符串值的格式插入 -- 选项数字值分别对应1,2,4,8,最多64个选项 -- 查询结果,前7行和后7行的值是一样的 select * from set_table; -- 3、查询 -- 找出SET_col包含value set成员的行。 SELECT * FROM set_table WHERE FIND_IN_SET('swimming',hobby)>0; -- 找出set_col包含value的行,甚至是在另一个SET成员的子字符串中。 SELECT * FROM set_table WHERE hobby LIKE '%mov%'; -- 寻找包含第1个set成员的值。 SELECT * FROM set_table WHERE hobby & 1; -- 寻找一个确切匹配的值。 SELECT * FROM set_table WHERE hobby = 'music,movie'; -- 注意,用'music,movie'跟'movie,music'查询返回的结果是不同的,(指定值时的顺序应与在列定义中所列的顺序相同。)