SQL Server相当于MySQL枚举数据类型?

时间:2009-09-16 17:13:26

标签: sql sql-server tsql sql-server-2008 types

SQL Server 2008是否具有类似MySQL enum的数据类型?

5 个答案:

答案 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个中心表。

http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/