SQLサーバーではい/いいえブールフィールドを作成するにはどうすればよいですか?


328

から、または一般に変換するときに、yes/noIE Booleanフィールドを作成するためのベストプラクティスは何access databaseですか?

回答:


441

同等のものはBITフィールドです。

でとSQLを使用01てビットフィールドを設定します(Accessのyes / noフィールドと同じように)。Management Studioでは、(少なくとも最近のバージョンでは)false / true値として表示されます。

ASP.NETを介してデータベースにアクセスすると、フィールドがブール値として公開されます。


3
また、Accessデータベースでテーブルをリンクすると、trueの値は-1になり、falseの値は0になります。少なくともAccess 2003では(これは、顧客のMSSQLデータベースに接続していた便利なバージョンです)。
Henrik Erlandsson

2
完全に等価ではないことに注意してください。スカラー関数がビットを返す場合でも、0または1かどうかをテストする必要があります。たとえば、dbo.IsReturnsBit(value)= 1
Darren Griffith

@ D-Money:はい。ただし、条件で値を使用する場合にのみ、比較を行う必要があります。結果で値を使用する場合は、比較を行わないでください。
Guffa

あなたはあなたの中にコピー+貼り付けデータであれば再MGT Studioはなく、1または0として、また真/偽としてそれを持っている必要があります
gorlaz

110

BITデータ型は、一般的に格納するために使用されるboolean(値0のためにfalse1のためにtrue)。


1
されたBITSQL標準で指定されましたか?私はそれを見つけるのに苦労しています。一番近いのは「ブール型」です。
16

1
ビットとブールのセマンティクスが異なることについて、あなたは少し心配していますか?
Darth Egregious


20

BITフィールドを使用できます。

BIT列を既存のテーブルに追加する場合、SQLコマンドは次のようになります。

ALTER TABLE table_name ADD yes_no BIT

新しいテーブルを作成する場合は、次のようにしますCREATE TABLE table_name (yes_no BIT)


19

データ型を使用できます bit

0より大きい挿入値は「1」として格納されます

挿入された0未満の値は「1」として格納されます

「0」として挿入された値は「0」として格納されます

これはMS SQL Server 2012 Expressにも当てはまります


1
0未満の値に関するステートメントについて確信がありますか?
BiLaL

3
@BiLaLこれは、ほとんどの言語で共通の動作です。0はfalse、非0数値はtrueです。また、署名付きバイナリではすべてのビットが1に設定されているため、-1がtrueのデフォルト値になることも一般的でした。現在、trueのデフォルト値として1を表示することは非常に一般的です(最下位ビットセットのみ)。
CJデニス

16

ビットの使用についてはすでに回答があります。これらの回答にさらに追加します。

ブール値を表すにはビットを使用する必要があります。

MSDN記事の備考。

ビットは、1、0、またはNULLの値を取ることができます。

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

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

ビットに変換すると、ゼロ以外の値が1にプロモートされます。

参照

注:データ型でのみ値を1および0に保つことをお勧めします NOT NULL

ビットには値1、0、およびNULLがあるため。これについては真理値表を参照してください。それに応じて値を計画してください。ビットデータ型にNULL値を許可することにより、混乱が生じる可能性があります。

ここに画像の説明を入力してください

参照



12

BITフィールドを使用できます

新しいテーブルを作成するには:

CREATE TABLE Tb_Table1
(
ID              INT,
BitColumn       BIT DEFAULT 1
)

既存のテーブルに列を追加:

ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1

レコードを挿入するには:

INSERT Tb_Table1 VALUES(11,0)

9

bit最も単純で、占有するスペースも最小になります。「Y / N」に比べてそれほど冗長ではありませんが、私はそれで大丈夫です。


4
Y == yとN = nについて心配する必要はありません。純粋なtrueまたはfalseです。意図は完全に明白であり、単一の文字フィールドが招待する「特別な」ケースはありません:)
Rob Grant

5

bit最適なオプションです。そうでなければ私はかつてintその目的のために使用しました。1のためにtrue&の0ためにfalse


2
通常、Falseの場合は0、Trueの場合はゼロ以外を使用します。
2016

2
味わいがたくさんある、または真実は良い政治家だと言えるかもしれません:D
ブダフローリン

1

任意のバージョンのSQL Server Management StudioでBIT、データ型として使用

TrueまたはFalse値オプションを提供します。Onlyを使用する場合、1または0この方法を使用できる場合:

CREATE TABLE SampleBit(
    bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
)

しかし、私は最高のオプションBITとして厳しくアドバイスします。それが誰かを助けることを完全に願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.