SQL Server 2008是否具有类似MySQL enum
的数据类型?
答案 0 :(得分:137)
没有。有一个模糊的等价物:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
答案 1 :(得分:78)
我在这里找到的最佳解决方案是创建一个查找表,将可能的值作为主键,并为查找表创建一个外键。
答案 2 :(得分:3)
IMHO Lookup表是可行的方式,具有参照完整性。 但是,只有通过以下示例来避免“邪恶的魔法数字”: Generate enum from a database lookup table using T4
玩得开心!
答案 3 :(得分:2)
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
在表现重要的地方,仍然使用硬值。
答案 4 :(得分:2)
当我想在SQL Server中实现枚举时,找到了这个有趣的方法。
下面提到的方法非常引人注目,考虑到所有数据库枚举需求都可以满足2个中心表。