SQL Server - bit型の列で min, max 演算子を使用する

min と max 演算子は整数型や小数型などの数値型の列にしか使用できないため、bit型の列ではエラーが発生します。bit型を数値型に型変換をすることで使用可能になります。

エラーの発生例

--bit型の列に対して min と max 演算子
SELECT MIN([BitData])  --bit型
      ,MAX([BitData])  --bit型
    FROM [SampleTable]

エラーメッセージ

「オペランドのデータ型 bit は min 演算子では無効です。」
エラーの発生例
エラーの発生例

bit 列で min, max 演算子を使用する方法

CAST または CONVERT 関数で int型に変換してから min, max 演算子を使用します。次のSQLは型変換後に min, max 演算子を使用しているため、エラーは発生しません。

CAST関数を使用した例

--CAST関数でint型に変換してから min と max 演算子
SELECT MIN(CAST([BitData] AS int))
      ,MAX(CAST([BitData] AS int))
  FROM [SampleTable];

CONVERT関数を使用した例

--CONVERT関数でint型に変換してから min と max 演算子
SELECT MIN(CONVERT(int, [BitData]))
      ,MAX(CONVERT(int, [BitData]))
  FROM [SampleTable];
実行結果
実行結果

参考資料

検証環境