http://en.wikipedia.org/wiki/Hacker_ (computer_game)
http://en.wikipedia.org/wiki/Hacker_2
существует также большая игра взламывания, имя которой я просто не могу помнить. Hrm.
Неявно преобразует установленное значение в INTEGER
.
Набор обрабатывается как битовая карта, поэтому первое значение устанавливает бит 0
, второе значение устанавливает бит 1
и т. д.
mysql> CREATE TABLE exhibitor_registry(exhibitor_categories set('contemporary',
'classical impression / transitional', 'outdoor', 'home accessories') NOT NULL);
Query OK, 0 rows affected (0.08 sec)
mysql> INSERT
-> INTO exhibitor_registry
-> VALUES ('contemporary,classical impression / transitional,outdoor');
Query OK, 1 row affected (0.03 sec)
mysql> SELECT exhibitor_categories
-> FROM exhibitor_registry;
+----------------------------------------------------------+
| exhibitor_categories |
+----------------------------------------------------------+
| contemporary,classical impression / transitional,outdoor |
+----------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT exhibitor_categories + 0
-> FROM exhibitor_registry;
+--------------------------+
| exhibitor_categories + 0 |
+--------------------------+
| 7 |
+--------------------------+
1 row in set (0.00 sec)
Проверьте http://dev.mysql.com/doc/refman/5.0/en /set.html для полного скинни, но в основном такое поле известно как «набор» - оно имеет список возможных значений, которые могут быть только одним или несколькими из них. Значение хранится в виде числа ... что означает, что экспонент_категории фактически сохраняет значение 4, когда кто-то устанавливает значение 'outdoor', потому что он устанавливает третий бит - '0100'. Когда вы позже получите значение обратно из базы данных, mysql автоматически превратит '0100' обратно в 'outdoor'.
Но, добавляя +0 к запросу, вы заставляете результат оставаться числом, поэтому вы фактически получите числовое значение «0100», если бы в данном случае значение строки было установлено на «outdoor».
Приносим извинения за получение enum и
Почему, вы можете спросить, он устанавливает значение «0100», а не просто говорит «3», как в перечислении? Поскольку набор может содержать несколько значений - если были выбраны значения «современный» (0001) и «открытый» (0100), он будет хранить «0101» <- установку 1-го и 3-го битов, которые будут возвращены как «5». если вы используете код +0.
Почему, спросите вы, он устанавливает значение «0100», а не просто говорит «3», как в перечислении? Поскольку набор может содержать несколько значений - если были выбраны значения «современный» (0001) и «открытый» (0100), он будет хранить «0101» <- установку 1-го и 3-го битов, которые будут возвращены как «5». если вы используете код +0.
Почему, спросите вы, он устанавливает значение «0100», а не просто говорит «3», как в перечислении? Поскольку набор может содержать несколько значений - если были выбраны значения «современный» (0001) и «открытый» (0100), он будет хранить «0101» <- установку 1-го и 3-го битов, которые будут возвращены как «5». если вы используете код +0.