多くの boolean ( ) フィールドを使用する場合、ビットごとの合計であるBIT
単一のフィールドを使用する方がよい場合があります。INT
これにより、ストレージとテーブルの定義が簡素化されますが、コードがより複雑になります。テーブル「Patients」と、さまざまな意味を持ついくつかの数値があるとします: 薬を飲んでいる、パラセタモールでアレルギーがある、糖尿病などです。チェックされたフィールドを挿入すると、対応する数値が単純に合計されます。select ステートメントを実行するときは、bitwise-and 比較を少し行います: TotalValue & Value = Value
. ここに少しのコードがあります:
CREATE TABLE #Patients(Id INT, PatientName VARCHAR(50), MiscIssues INT)
DECLARE @IsOnMedication TINYINT = 2
DECLARE @IsParacetamolAllergic TINYINT = 4
DECLARE @IsDiabetic TINYINT = 8
INSERT INTO #Patients
VALUES
(1, 'A', @IsDiabetic + @IsOnMedication)
, (2, 'B', @IsDiabetic + @IsOnMedication + @IsParacetamolAllergic)
SELECT * FROM #Patients WHERE MiscIssues & @IsDiabetic = @IsDiabetic
DROP TABLE #Patients
もう 1 つのオプションは、カスタム フィールドを使用することですが、私の経験では、大量のレコードがある場合、このアプローチはうまく機能しません。