2010-06-01 1 views
5

Eventuali duplicati:
Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?Come definire ENUM in SQL Server 2005?

Esiste un modo per definire ENUM in SQL Server 2005?

Ho fissato valori che ho bisogno di usare in procedure e funzioni.

+0

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

+0

Grazie per il collegamento Ismail. Votato per chiudere. –

+0

Stai parlando di come memorizzare i valori impostati in stored-procs? non puoi usare "declare @constName varchar (1000)" – VoodooChild

risposta

5

Utilizzare una o più UDF scalari?

Uno per costante:

  • dbo.CONST_Bicycle restituisce 1
  • dbo.CONST_Car restituisce 2

Uno per enum:

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

o utilizzare una tabella con ID, Nome per enum

Utilizzare un enum lato client per abbinare questo (forse con la convalida contro la soluzione di tabella)

Non c'è alcun rapida o modo pulito per fare questo come c'è in .net (come per il tuo commento).

+0

Significa che devo creare una UDF scalare e un tipo associato a questo. Da questo modo posso usarlo in Where Condition? – KuldipMCA

1

Si potrebbe desiderare di avere una tabella di ricerca denominata LuVehicle con colonne Id e Nome.

valori possono apparire come

1,Bicycle 
2,Car 
3,MotorCycle 

allora si può avere chiave foriegn della colonna Id ovunque sia necessario nelle tabelle del database.

Per recuperare il nome esatto del valore, è possibile avere un join interno semplice con la tabella LuVehicle. Qualcosa di simile

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

SQL Server supporta tipi di dati definiti dall'utente. Potresti voler fare qualcosa con CREATE TYPE (Transact-SQL). Ma non so nemmeno se sia possibile attraverso i tipi di dati definiti dagli utenti e non a conoscenza dei suoi pro e contro. Potrebbe essere qualcun altro gettare più luce su di esso.