T-SQL enum数字或字符串
本文关键字:字符串 数字 enum T-SQL | 更新日期: 2023-09-27 18:08:01
我有一个表Drivers
,列Id
, Name
, Status
。在c#中,我有一个驱动状态的枚举
public enum DriverStatus
{
Online = 0,
Offline = 1,
Busy = 2,
SoonFree = 3
}
目前在数据库中,我使用varchar
数据类型的Status
列,这意味着我有这样的记录:
1 John Online
2 Elsy Offline
这看起来很糟糕,我认为这需要更改为状态列类型tinyint
,因为:
- T-SQL
Tinyint
只有一个字节大小,范围为0-255。 - 现在不可能按状态列正常排序,因为它是
varchar
,所以它按字母顺序排序,而不是按enum优先级排序。 - 如果我重命名
DriverStatus
enum值名称,我还需要更新数据库以保持一致。
然后我问其他人为什么我们使用varchar
枚举列,唯一的原因是它更容易调试,因为你看到的是文本而不是像0或3这样的数字。有什么真正好的理由在数据库中为枚举使用字符串吗?
最好使用查找表查找枚举值。
优势:
- 通常使用较少的数据库空间。
- 重命名显示值非常容易。
- 全球化是可能的。
- 很容易退出不再使用的值。
- 我的查找表总是包含三个字段:[ID/主键],名称和启用