【问题标题】:How to define ENUM in SQL Server 2005? [duplicate]如何在 SQL Server 2005 中定义 ENUM? [复制]
【发布时间】:2010-06-01 04:54:47
【问题描述】:

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

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

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

【问题讨论】:

  • 感谢伊斯梅尔的链接。投票结束。
  • 您是在谈论如何将设置值存储在存储过程中?你能不使用“declare @constName varchar(1000)”
  • 我检查了链接但是如何在多个过程和功能中使用?我对答案不满意。我需要一些可以在 .net 等过程和函数中全局使用的东西。

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


【解决方案1】:

使用一个或多个标量 UDF?

每个常数一个:

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

每个枚举一个:

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

或者使用带有 ID 的表,每个枚举的名称

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

没有快速或干净的方式来做到这一点,就像 .net 中的那样(根据您的评论)。

【讨论】:

  • 意味着我必须创建一个标量 UDF 和一个与之关联的类型。通过这种方式,我可以在 Where Condition 中使用它吗?
【解决方案2】:

您可能希望有一个名为 LuVehicle 的查找表,其中包含 Id 和 Name 列。

值可能看起来像

1,Bicycle
2,Car
3,MotorCycle

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

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

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

【讨论】:

    【解决方案3】:

    SQL Server 支持用户定义的数据类型。你可能想用CREATE TYPE (Transact-SQL) 做点什么。但我不知道是否可以通过用户定义的数据类型并且不知道它的优缺点。可能其他人会对此有所了解。

    【讨论】:

      猜你喜欢
      • 2010-10-21
      • 2012-05-07
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多