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'查询返回的结果是不同的,(指定值时的顺序应与在列定义中所列的顺序相同。)

 

11.3.6 The SET Type(官方文档链接)

posted on 2019-02-16 10:48  wtsgtc  阅读(27204)  评论(0编辑  收藏  举报

导航