如何在SQL Server 2005中定义ENUM?

时间:2010-06-01 04:54:47

标签: sql sql-server sql-server-2005 stored-procedures

  

可能重复:
  Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?

有没有办法在SQL Server 2005中定义ENUM?

我有固定的值,我需要在程序和函数中使用。

3 个答案:

答案 0 :(得分:5)

使用一个或多个标量UDF?

每个常数一个:

  • dbo.CONST_Bicycle返回1
  • dbo.CONST_Car返回2

每个枚举一个:

  • dbo.CONST_Types('Bicycle')返回1
  • dbo.CONST_Types('Car')返回2

或者使用ID为每个枚举名称的表

使用客户端枚举来匹配它(可能与表解决方案的验证)

没有快速或干净的方式来执行此操作,就像在.net中一样(根据您的评论)。

答案 1 :(得分:1)

您可能希望查找表名为LuVehicle,列为Id和Name。

值可能看起来像

1,Bicycle
2,Car
3,MotorCycle

然后,您可以在数据库表中的任何位置使用Id列的foriegn键。

要检索值的确切名称,您可以使用LuVehicle表进行简单的内部联接。像这样的东西

select empname, vehicleId, LuVehicle.Name from employees, LuVehicle 
where employees.vehicleId = LuVehicle.Id

答案 2 :(得分:0)

SQL Server支持用户定义的数据类型。您可能希望对CREATE TYPE (Transact-SQL)执行某些操作。但我不知道即使可以通过用户定义的数据类型,也不知道它的优点和缺点。可能是其他人会对它有更多的启发。