如何在SQL Server 2005中定义ENUM?

5

SQL Server 2005有没有类似于MySQL的枚举数据类型的等效物? - IsmailS
谢谢你的链接,Ismail。我投票关闭。 - Dan McGrath
你是在谈论如何在存储过程中存储集合值吗?你不能使用“declare @constName varchar(1000)”吗? - VoodooChild
我已经检查了链接,但是如何在多个程序和函数中使用呢? 我对答案不满意。 我需要像 .net 一样可以在程序和函数中全局使用的东西。 - KuldipMCA
3个回答

5

使用一个或多个标量UDF?

每个常量一个:

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

每个枚举一个:

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

或者使用一个表,每个枚举有ID和名称

使用客户端枚举来匹配它(也许要对表格解决方案进行验证)

与.Net不同,这里没有快速而干净的方法(根据您的评论)。


我需要创建一个标量 UDF 和一个与之关联的类型。通过这种方式,我可以在 Where 条件中使用它吗? - KuldipMCA

1
你可能想要一个名为 "LuVehicle" 的查找表,其中包含列 Id 和 Name。
值可能如下所示:
1,Bicycle
2,Car
3,MotorCycle

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

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

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

0
SQL Server支持用户定义的数据类型。你可能想要使用CREATE TYPE (Transact-SQL)来做一些事情。但是我不知道是否可以通过用户定义的数据类型实现,也不清楚它的优缺点。也许其他人能更详细地解释一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接