Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to define ENUM in SQL Server 2005? [duplicate]

Possible Duplicate:
Does SQL Server 2005 have an equivalent to MySql’s ENUM data type?

Is there any way to define ENUM in SQL Server 2005?

I have fixed values which I need to use in procedures and functions.

like image 451
KuldipMCA Avatar asked Jun 01 '10 04:06

KuldipMCA


2 Answers

Use one or more scalar UDFs?

One per constant:

  • dbo.CONST_Bicycle returns 1
  • dbo.CONST_Car returns 2

One per enum:

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

Or use a table with ID, Name per enum

Use a client side enum to match this (perhaps with validation against the table solution)

There is no quick or clean way to do this like there is in .net (as per your comment).

like image 139
gbn Avatar answered Nov 19 '22 11:11

gbn


You might want to have lookup table named LuVehicle With columns Id and Name.

Values may look like

1,Bicycle
2,Car
3,MotorCycle

Then you can have foriegn key of Id column wherever you need in your database tables.

To retrieve the exact name of the value, you can have a simple inner join with LuVehicle table. Something like this

select empname, vehicleId, LuVehicle.Name from employees, LuVehicle 
where employees.vehicleId = LuVehicle.Id
like image 32
IsmailS Avatar answered Nov 19 '22 12:11

IsmailS