2010-06-01 17 views
5

Duplicar posibles:
Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?¿Cómo se define ENUM en SQL Server 2005?

¿Hay alguna manera de definir ENUM en SQL Server 2005?

Tengo valores fijos que necesito usar en procedimientos y funciones.

+0

Dupe of http://stackoverflow.com/questions/262802/does-sql-server-2005-have-an-equivalent-to-mysqls-enum-data-type – IsmailS

+0

Gracias por el enlace Ismail. Votado para cerrar. –

+0

¿Estás hablando de cómo almacenar valores establecidos en procs almacenados? ¿no puedes usar "declare @constName varchar (1000)" – VoodooChild

Respuesta

5

¿Utiliza uno o más UDF escalares?

Una por constante:

  • dbo.CONST_Bicycle devuelve 1
  • dbo.CONST_Car devuelve 2

Una por enum:

  • dbo.CONST_Types('Bicycle') devuelve 1
  • dbo.CONST_Types('Car') retornos 2

o utilizar una mesa con identificación, nombre por enumeración

Utilice un enum lado del cliente para que coincida con esto (tal vez con la validación en contra de la solución de la tabla)

No es sin rápida o limpia manera de hacer esto como en .net (según su comentario).

+0

Significa que tengo que crear un UDF escalar y un tipo asociado a esto. De esta forma, ¿puedo usar esto en Where Condition? – KuldipMCA

1

Es posible que desee tener una tabla de búsqueda llamada LuVehicle Con columnas Id y Nombre.

Los valores pueden parecerse a

1,Bicycle 
2,Car 
3,MotorCycle 

, entonces puede tener clave externa de la columna Id siempre que se necesite en las tablas de bases de datos.

Para recuperar el nombre exacto del valor, puede tener una unión interna simple con la tabla LuVehicle. Algo como esto

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

SQL Server admite tipos de datos definidos por el usuario. Es posible que desee hacer algo con CREATE TYPE (Transact-SQL). Pero no sé si es posible a través de los tipos de datos definidos por el usuario y sin tener en cuenta sus ventajas y desventajas. Puede ser que alguien más arroje más luz sobre él.

Cuestiones relacionadas