web-dev-qa-db-ja.com

MySQL enumデータ型に相当するSQL Server

SQL Server 2008には、MySQLのenumのようなデータ型がありますか?

120
Patrick

そうではありません。あいまいなものがあります:

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))
140
chaos

これで私が見つけた最良の解決策は、可能な値を主キーとして持つルックアップテーブルを作成し、ルックアップテーブルへの外部キーを作成することです。

81
user1431422

IMHOルックアップテーブルは、参照整合性を備えた方法です。ただし、次のような例に従って「Evil Magic Numbers」を回避する場合のみ: T4を使用してデータベースルックアップテーブルからenumを生成する

楽しんで!

3
Jony Adamit

SQL Serverで列挙型を実装したいときに、この興味深いアプローチを見つけました。

リンクで後述するアプローチは、データベース列挙のすべてのニーズを2つの中央テーブルで満たすことができることを考えると、非常に魅力的です。

http://blog.sqlauthority.com/2010/03/22/sql-server-enumerations-in-relational-database-best-practice/

2
user_v
CREATE FUNCTION ActionState_Preassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 0
END

GO

CREATE FUNCTION ActionState_Unassigned()
RETURNS tinyint
AS
BEGIN
    RETURN 1
END

-- etc...

パフォーマンスが重要な場合は、ハード値を使用します。

2