SQL Server でビット型データに定数 1 または 0 を簡単に設定する方法
SQL Server でビット値を定数 1 または 0 で暗示する方法
概要
SQL Server では、ビット型データに定数 1 または 0 を明示的に指定する代わりに、暗黙的に指定する方法があります。これは、コードをより簡潔で読みやすくするために役立ちます。
暗黙的なビット値の指定方法
以下の方法で、ビット型データに定数 1 または 0 を暗黙的に指定できます。
論理値を使用する
-- 論理値 TRUE は暗黙的にビット値 1 として解釈されます
DECLARE @bitValue1 BIT = TRUE;
-- 論理値 FALSE は暗黙的にビット値 0 として解釈されます
DECLARE @bitValue2 BIT = FALSE;
-- 数値 1 は暗黙的にビット値 1 として解釈されます
DECLARE @bitValue3 BIT = 1;
-- 数値 0 は暗黙的にビット値 0 として解釈されます
DECLARE @bitValue4 BIT = 0;
-- 文字列 "TRUE" は暗黙的にビット値 1 として解釈されます
DECLARE @bitValue5 BIT = 'TRUE';
-- 文字列 "FALSE" は暗黙的にビット値 0 として解釈されます
DECLARE @bitValue6 BIT = 'FALSE';
ビットマスクを使用する
-- ビットマスク 1 は暗黙的にビット値 1 として解釈されます
DECLARE @bitValue7 BIT = 1B;
-- ビットマスク 0 は暗黙的にビット値 0 として解釈されます
DECLARE @bitValue8 BIT = 0B;
利点
暗黙的なビット値の指定には、以下の利点があります。
- コードがより簡潔になる
- 型変換の必要がない
注意事項
暗黙的なビット値の指定を使用する場合は、以下の点に注意する必要があります。
- 暗黙的なビット値の指定は、SQL Server 2008 以降のみで使用できます。
- 暗黙的なビット値の指定は、ビット型データにのみ使用できます。
例
以下の例では、暗黙的なビット値の指定を使用して、ビット型データに定数 1 または 0 を設定する方法を示します。
-- 論理値 TRUE を使用してビット値 1 を設定する
DECLARE @bitValue1 BIT = TRUE;
-- 数値 1 を使用してビット値 1 を設定する
DECLARE @bitValue2 BIT = 1;
-- 文字列 "TRUE" を使用してビット値 1 を設定する
DECLARE @bitValue3 BIT = 'TRUE';
-- ビットマスク 1 を使用してビット値 1 を設定する
DECLARE @bitValue4 BIT = 1B;
-- 論理値 FALSE を使用してビット値 0 を設定する
DECLARE @bitValue5 BIT = FALSE;
-- 数値 0 を使用してビット値 0 を設定する
DECLARE @bitValue6 BIT = 0;
-- 文字列 "FALSE" を使用してビット値 0 を設定する
DECLARE @bitValue7 BIT = 'FALSE';
-- ビットマスク 0 を使用してビット値 0 を設定する
DECLARE @bitValue8 BIT = 0B;
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2,
@bitValue3,
@bitValue4,
@bitValue5,
@bitValue6,
@bitValue7,
@bitValue8;
このコードを実行すると、以下の結果が表示されます。
bitValue1 bitValue2 bitValue3 bitValue4 bitValue5 bitValue6 bitValue7 bitValue8
--------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 1 1 1 0 0 0 0
-- 論理値 TRUE を使用してビット値 1 を設定する
DECLARE @bitValue1 BIT = TRUE;
-- 論理値 FALSE を使用してビット値 0 を設定する
DECLARE @bitValue2 BIT = FALSE;
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
-- 数値 1 を使用してビット値 1 を設定する
DECLARE @bitValue1 BIT = 1;
-- 数値 0 を使用してビット値 0 を設定する
DECLARE @bitValue2 BIT = 0;
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
-- 文字列 "TRUE" を使用してビット値 1 を設定する
DECLARE @bitValue1 BIT = 'TRUE';
-- 文字列 "FALSE" を使用してビット値 0 を設定する
DECLARE @bitValue2 BIT = 'FALSE';
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
-- ビットマスク 1 を使用してビット値 1 を設定する
DECLARE @bitValue1 BIT = 1B;
-- ビットマスク 0 を使用してビット値 0 を設定する
DECLARE @bitValue2 BIT = 0B;
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
説明
これらのサンプルコードは、SQL Server でビット型データに定数 1 または 0 を暗黙的に指定する方法を示しています。
DECLARE
ステートメントを使用して、ビット型変数を宣言します。- 定数 1 または 0 を暗黙的に指定するには、以下のいずれかの方法を使用します。
- 論理値
TRUE
またはFALSE
- 数値 1 または 0
- ビットマスク
1B
または0B
- 論理値
- このサンプルコードは、あくまでも一例です。必要に応じて、コードをカスタマイズすることができます。
SQL Server でビット値を定数 1 または 0 で暗黙的に指定するその他の方法
前述の方法に加えて、SQL Server でビット値を定数 1 または 0 で暗黙的に指定するには、以下の方法もあります。
SQL Server 2016 以降では、ビット列挙型を使用して、ビット値を定数 1 または 0 で暗黙的に指定することができます。ビット列挙型は、事前定義されたビット値のセットを定義するユーザー定義型です。
-- ビット列挙型を作成する
CREATE TYPE MyBitEnum AS ENUM('TRUE', 'FALSE');
-- ビット列挙型の値を使用してビット値を設定する
DECLARE @bitValue1 BIT = MyBitEnum.TRUE;
DECLARE @bitValue2 BIT = MyBitEnum.FALSE;
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
-- ビット定数を使用してビット値を設定する
DECLARE @bitValue1 BIT = BIT'1';
DECLARE @bitValue2 BIT = BIT'0';
-- ビット値を比較する
SELECT
@bitValue1,
@bitValue2;
bitValue1 bitValue2
--------- ----------
1 0
これらの方法は、SQL Server 2016 以降または 2019 以降でのみ使用できます。
- ビット列挙型を使用するには、SQL Server 2016 以降が必要です。
sql sql-server t-sql