1

次のスニペットでは、4行目でエラーが発生しています(「=」の近くの構文が正しくありません)。selectステートメントの列として等式の結果を表示する必要があります。

declare @five int
set @five = 5

declare @bool bit
set @bool = (@five = 6)

select @five, @bool

結果セットには2つの列が必要です:5 false

4

4 に答える 4

5

T-SQLには実際のブール型はありません。変な状況です。解決策は次のとおりです。

set @bool = case when @five = 6 then 1 else 0 end

他の言語ではブール型になる真理式には、T-SQLには型がありません。真理式は、、、などの特別な構文上の場所whereでのみ使用できます。ifcase

于 2012-07-30T21:19:23.957 に答える
2

CASEそのロジックに関するステートメントが必要です。

declare @five int
set @five = 5

declare @bool bit
set @bool = CASE WHEN @five = 6 THEN 1 ELSE 0 END

select @five, @bool
于 2012-07-30T21:19:46.130 に答える
1

あなたはを使用してこれを行うことができますCASE

declare @five int
set @five = 5

select @five, CASE WHEN @five = 6 THEN 1 ELSE 0 END
于 2012-07-30T21:20:37.077 に答える
1

エキゾチックなアプローチとして(CASEロジックを使用したくない場合)、ビット単位のオペランドも機能します。

declare @five int
set @five = 5

declare @bool bit
set @bool = (@five ^ 5)

select @five, ~@bool
于 2012-07-30T21:33:03.263 に答える