LinuxShareКто владеет информацией - владеет всем! Документация по Linux! |
||
|
MySQL.RU .:. Одобрено лучшими российскими программистамиСправочное руководство по MySQL6.2.3.4 Тип множества SET6.2.3.4 Тип множества
|
SET элемент | числовое значение | двоичное значение |
a | 1 | 0001
|
b | 2 | 0010
|
c | 4 | 0100
|
d | 8 | 1000
|
Если вы вставляет значение 9
в этот столбец, это соответствует 1001
в двоичном представлении,
так что первый ("a"
) и четвертый ("d"
) элементы множества выбираются, что в результате дает "a,d"
.
Для значения, содержащего более чем один элемент множестве, не играет никакой роли, в каком
порядке эти элементы перечисляются в момент вставки значения. Также не играет роли,
как много раз то или иное значение перечислено. Когда позже это значение выбирается, каждый
элемент будет присутствовать только единожды, и элементы будут перечислены в том порядке,
в котором они перечисляются в определении таблицы. Например, если столбец определен как
SET("a","b","c","d")
, тогда "a,d"
, "d,a"
, и
"d,a,a,d,d"
будут представлены как "a,d"
.
Если вы вставляете в столбец SET некорректую величины, это значение будет проигнорировано.
SET-значения сортируются в соответствии с числовым представлением. NULL-значения идут в первую очередь.
Обычно, следует выполнять SELECT
для SET-столбца, используя оператор LIKE
или функцию FIND_IN_SET()
:
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-определение во втором столбце.
|