Risposte:
Non C'è un vago equivalente:
mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
La migliore soluzione che ho trovato in questo è creare una tabella di ricerca con i possibili valori come chiave primaria e creare una chiave esterna per la tabella di ricerca.
Le tabelle di ricerca IMHO sono la strada da percorrere, con integrità referenziale. Ma solo se eviti "Evil Magic Numbers" seguendo un esempio come questo: Genera enum da una tabella di ricerca del database usando T4
Divertiti!
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
RETURN 0
END
GO
CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
RETURN 1
END
-- etc...
Laddove le prestazioni contano, utilizzare ancora i valori rigidi.
Ho trovato questo approccio interessante quando volevo implementare enum in SQL Server.
L'approccio menzionato di seguito nel link è abbastanza convincente, considerando che tutte le esigenze di enum del database potrebbero essere soddisfatte con 2 tabelle centrali.