2010-06-01 8 views
5

Powiel możliwe:
Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?Jak zdefiniować ENUM w SQL Server 2005?

Czy istnieje jakiś sposób, aby określić ENUM w SQL Server 2005?

Mam ustalone wartości, które muszę użyć w procedurach i funkcjach.

+0

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

+0

Dzięki za link Ismail. Zagłosowano, aby zamknąć. –

+0

Czy mówisz o tym, jak przechowywać ustawione wartości w przechowywanych procesach? nie możesz użyć "declare @constName varchar (1000)" – VoodooChild

Odpowiedz

5

Użyj jednego lub więcej skalarnych UDFs?

jeden za stałej:

  • dbo.CONST_Bicycle zwraca 1
  • dbo.CONST_Car zwraca 2

jeden za wyliczenia:

  • dbo.CONST_Types('Bicycle') zwraca 1
  • dbo.CONST_Types('Car') powraca 2

lub zastosować tabelę z ID, nazwa za wyliczenia

Użyj enum po stronie klienta, aby dopasować to (być może z walidacji w stosunku do roztworu tabeli)

Jest nr szybkie lub czysty sposób to zrobić, tak jak w .net (jak na twój komentarz).

+0

Oznacza, że ​​muszę utworzyć jeden UDF Scalar i jeden typ powiązany z tym. W ten sposób mogę użyć tego w Where Condition? – KuldipMCA

1

Możesz chcieć mieć tabelę odnośników o nazwie LuVehicle z kolumnami Id i Name.

wartości mogą wyglądać

1,Bicycle 
2,Car 
3,MotorCycle 

Wtedy można mieć foriegn klucz kolumny Id gdzie trzeba w tabelach bazy danych.

Aby uzyskać dokładną nazwę wartości, można uzyskać proste sprzężenie wewnętrzne za pomocą tabeli LuVehicle. Coś podobnego do tego:

0

Serwer SQL obsługuje typy danych zdefiniowane przez użytkownika. Możesz chcieć coś zrobić z CREATE TYPE (Transact-SQL). Ale nie wiem nawet, czy jest to możliwe dzięki zdefiniowanym przez użytkownika typom danych i nie są świadome jego plusów i minusów. Być może ktoś inny rzuci na to więcej światła.