0

我不确定如何在包含数字和字符的 MySQL 表中存储某种类型的数据。例如,在锦标赛中,Round 包含整数1,2,3,...30以及QF, SF, GF四分之一决赛、半决赛和总决赛。

试过了VARCHAR(2),,,,CHAR(2)_ENUM('1', '2', ... , 'GF')TEXT

其中没有一个似乎正确地接受了数据。存储 Round 数据的最佳或数据类型方法是什么?

4

1 回答 1

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

于 2013-05-25T03:57:43.607 回答