次のスニペットでは、4行目でエラーが発生しています(「=」の近くの構文が正しくありません)。selectステートメントの列として等式の結果を表示する必要があります。
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
結果セットには2つの列が必要です:5 false
次のスニペットでは、4行目でエラーが発生しています(「=」の近くの構文が正しくありません)。selectステートメントの列として等式の結果を表示する必要があります。
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five = 6)
select @five, @bool
結果セットには2つの列が必要です:5 false
T-SQLには実際のブール型はありません。変な状況です。解決策は次のとおりです。
set @bool = case when @five = 6 then 1 else 0 end
他の言語ではブール型になる真理式には、T-SQLには型がありません。真理式は、、、などの特別な構文上の場所where
でのみ使用できます。if
case
CASE
そのロジックに関するステートメントが必要です。
declare @five int
set @five = 5
declare @bool bit
set @bool = CASE WHEN @five = 6 THEN 1 ELSE 0 END
select @five, @bool
あなたはを使用してこれを行うことができますCASE
declare @five int
set @five = 5
select @five, CASE WHEN @five = 6 THEN 1 ELSE 0 END
エキゾチックなアプローチとして(CASEロジックを使用したくない場合)、ビット単位のオペランドも機能します。
declare @five int
set @five = 5
declare @bool bit
set @bool = (@five ^ 5)
select @five, ~@bool