我不确定如何在包含数字和字符的 MySQL 表中存储某种类型的数据。例如,在锦标赛中,Round 包含整数1,2,3,...30
以及QF, SF, GF
四分之一决赛、半决赛和总决赛。
试过了VARCHAR(2)
,,,,CHAR(2)
_ENUM('1', '2', ... , 'GF')
TEXT
其中没有一个似乎正确地接受了数据。存储 Round 数据的最佳或数据类型方法是什么?
我不确定如何在包含数字和字符的 MySQL 表中存储某种类型的数据。例如,在锦标赛中,Round 包含整数1,2,3,...30
以及QF, SF, GF
四分之一决赛、半决赛和总决赛。
试过了VARCHAR(2)
,,,,CHAR(2)
_ENUM('1', '2', ... , 'GF')
TEXT
其中没有一个似乎正确地接受了数据。存储 Round 数据的最佳或数据类型方法是什么?
就个人而言,我会直接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 |