2010-06-01 6 views
5

Possible en double:
Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?Comment définir ENUM dans SQL Server 2005?

Est-il possible de définir ENUM dans SQL Server 2005?

J'ai des valeurs fixes que j'ai besoin d'utiliser dans les procédures et les fonctions.

+0

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

+0

Merci pour le lien Ismail. Voté pour fermer. –

+0

Parlez-vous de la façon de stocker les valeurs définies dans des process-stockés? ne pouvez-vous pas utiliser "declare @constName varchar (1000)" – VoodooChild

Répondre

5

Utilisez une ou plusieurs fonctions UDF scalaires?

constant Un par:

  • dbo.CONST_Bicycle retourne 1
  • dbo.CONST_Car renvoie 2

Un par enum:

  • dbo.CONST_Types('Bicycle') renvoie 1
  • dbo.CONST_Types('Car') renvoie 2

Ou utiliser une table avec ID, nom par ENUM

Utilisez un côté client ENUM pour correspondre à ce (peut-être avec validation par rapport à la solution de table)

Il n'y a pas rapide ou propre façon de faire comme s'il y avait .net (selon votre commentaire).

+0

Signifie que je dois créer un UDF scalaire et un type associé à cela. De cette façon puis-je l'utiliser dans Where Condition? – KuldipMCA

1

Vous pouvez avoir une table de recherche nommée LuVehicle avec les colonnes Id et Name.

Les valeurs peuvent ressembler à

1,Bicycle 
2,Car 
3,MotorCycle 

Ensuite, vous pouvez avoir la clé foriegn de la colonne Id où vous avez besoin dans vos tables de base de données.

Pour récupérer le nom exact de la valeur, vous pouvez avoir une jointure interne simple avec la table LuVehicle. Quelque chose comme ceci

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

SQL Server prend en charge les types de données définis par l'utilisateur. Vous voudrez peut-être faire quelque chose avec CREATE TYPE (Transact-SQL). Mais je ne sais pas même si c'est possible grâce à des types de données définis par l'utilisateur et pas au courant de ses avantages et inconvénients. Peut-être quelqu'un d'autre va jeter plus de lumière à ce sujet.