SQL语句中的"set + 0"有什么作用?

Oba*_*bay 7 mysql sql

我对这个SQL语句的含义感到困惑:

SELECT exhibitor_categories+0 from exhibitor_registry
Run Code Online (Sandbox Code Playgroud)

什么是Exhibitor_categories + 0?它返回返回的每一行的数字.

Exhibitor_categories定义为:

set('contemporary', 'classical impression / transitional', 'outdoor', 'home accessories')
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间 :)

Qua*_*noi 7

它隐含地将设定值转换为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)
Run Code Online (Sandbox Code Playgroud)