web-dev-qa-db-ja.com

MySQLにあるようなMicrosoft SQL Serverにブールデータ型がありますか?

MySQLにあるようなMicrosoft SQL Serverにブールデータ型がありますか?

もしそうなら、MS SQL Serverの代替は何ですか?

306
TinTin

BITデータ型を使ってブールデータを表すことができます。 BITフィールドの値は、1,0またはnullです。

413
kristian

BIT データ型を使用することをお勧めします。おそらく設定はNOT NULLのようになります。

MSDNの記事を引用する

ビット(Transact-SQL)

1、0、またはNULLの値を取ることができる整数データ型。

SQL Serverデータベースエンジンは、ビット列の格納を最適化します。テーブルに8以下のビット列がある場合、列は1バイトとして格納されます。 9から最大16ビットの列がある場合、列は2バイトとして格納されます。

文字列値TRUEとFALSEはビット値に変換できます。TRUEは1に変換され、FALSEは0に変換されます。

82
Daniel Vassallo

あなたはbitを探しています。 1または0(またはNULL)を格納します。

あるいは、文字列'true''false'を1や0の代わりに使うこともできます。

declare @b1 bit = 'false'
print @b1                    --prints 0

declare @b2 bit = 'true'
print @b2                    --prints 1

また、0以外の値(正または負)は1に評価されます(場合によっては1に変換されます)。

declare @i int = -42
print cast(@i as bit)    --will print 1, because @i is not 0

truefalseデータ型の可能な値なので、SQL Serverは3つの値を持つロジック(NULLNULL、およびbit)を使用します。これが関連する真理値表です -

enter image description here

3値論理に関する詳細情報

SQL Serverにおける3値ロジックの例

http://www.firstsql.com/idefend3.htm

https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/

43
iliketocode

SQL Serverにはブールデータ型があります。その値は、TRUEFALSE、またはUNKNOWNです。ただし、ブールデータ型は、 比較演算子=<><>=など)または 論理演算子ANDなど)の組み合わせを含むブール式の結果のみです。 、ORINEXISTS)。ブール式は、 WHERE 句、 HAVING 句、 WHEN expressionCASE句、または IF または WHILE フロー制御ステートメント。

テーブル内の列のデータ型を含む他のすべての用途では、ブール値は許可されません。これらの他の用途では、 BIT データ型が推奨されます。 0列制約またはINTEGER制約でさらに制限されていない限り、値1NOT NULL、およびNULLのみを許可する、絞り込まれたCHECKのように動作します。

ブール式でBIT列を使用するには、=<>IS NULLなどの比較演算子を使用して比較する必要があります。例えば.

SELECT
    a.answer_body
FROM answers AS a
WHERE a.is_accepted = 0;

フォーマットの観点から、bit値は通常、クライアントソフトウェアでは0または1として表示されます。よりユーザーフレンドリーなフォーマットが必要で、データベースの前のアプリケーション層で処理できない場合、CASE式を使用して「ジャストインタイム」に変換できます。

SELECT
    a.answer_body,
    CASE a.is_accepted WHEN 1 THEN 'TRUE' ELSE 'FALSE' END AS is_accepted
FROM answers AS a;

ブール値をchar(1)varchar(5)などの文字データ型として保存することもできますが、それはあまり明確ではなく、ストレージ/ネットワークのオーバーヘッドが多く、不正な値を制限するには各列にCHECK制約が必要です。

参考として、answersテーブルのスキーマは次のようになります。

CREATE TABLE answers (
    ...,
    answer_body nvarchar(MAX) NOT NULL,
    is_accepted bit NOT NULL DEFAULT (0)
);
39
Mark Chesney

SQL ServerでBit DataTypeを使用してブールデータを格納できます。

7
Pranay Rana

Bitデータ型を使用してください。ネイティブT-SQLで扱う場合、値1と0があります。

7
Rodrick Chapman

SQL ServerはBitデータ型を使用します

6
HackedByChinese

BITデータ型を使用できます。 0、1、またはnullのいずれかです。特にTRUEまたはFALSEが必要な場合は、enumを使用して0と1をTrueとFalseに変換できます。そしてそれを文字列として渡します。

0
ayush jain

BITを介してSQL Serverにブール値を格納するためにTINYINT(1)データ型を使用するのは非常に効果的です。

0
Bipul Roy