我不确定如何在包含数字和字符的MySQL表中存储某种类型的数据。例如,在锦标赛中,Round分别包含整数1,2,3,...30
以及QF, SF, GF
,分别用于四分之一决赛,半决赛和总决赛。
尝试过VARCHAR(2)
,CHAR(2)
,ENUM('1', '2', ... , 'GF')
,TEXT
其中任何一个似乎都没有正确接受数据。存储Round数据的最佳或数据类型是什么?
答案 0 :(得分:0)
就个人而言,我只选择INT
类型,将四分之一决赛,半决赛和总决赛分配给您的域中超出范围的某些特定值(例如-1,-2,分别为-3或31,32,33)。
通过这种方式,您可以轻松地进行搜索,使用索引,订购结果集。
您在表示层中翻译为人类可读的值,或者您可以在MySql端执行此类操作
SELECT id,
CASE `round`
WHEN -1 THEN 'QF'
WHEN -2 THEN 'SF'
WHEN -3 THEN 'GF'
ELSE `round`
END round
FROM tournament
示例输出
| ID | ROUND |
--------------
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | QF |
| 1 | SF |
| 1 | GF |
<强> SQLFiddle 强>