
MySQL тип данных SET позволяет сохранить ноль или несколько величин, характеризующих одну строку в таблице. Например, одной книге может соответствовать несколько жанров одновременно, а некоторая одежда может быть использована в разные сезоны. Хранить жанры в нескольких колонках — плохая идея, потому можно сохранить их в типе данных SET. Поле с этим типом данных помечается SET('one', 'two')
и теперь, строки этого столбца могут иметь значения », ‘one’, ‘two’, ‘one,two’. Максимально количество хранимых величин — 64. Будьте внимательны! MySQL-таблица не может хранить более 255 уникальных элементов из типов SET и ENUM.
MySQL тип данных SET
SET элемент |
Десятичное значение | бинарное значение |
---|---|---|
'a' |
1 |
0001 |
'b' |
2 |
0010 |
'c' |
4 |
0100 |
'd' |
8 |
1000 |
Работа с полями типа данных SET
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,d'), ('d,a,d');
SELECT col FROM myset;
SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
SELECT * FROM tbl_name WHERE set_col LIKE '%value%';
SELECT * FROM tbl_name WHERE set_col & 1;
SELECT * FROM tbl_name WHERE set_col = 'val1,val2';