web-dev-qa-db-ja.com

Oracleデータベースにはボール型がありますか。

Ms SQL ServerのBITデータ型のように、Oracleデータベースにはブール型がありますか。

217
Peder

(PL/SQLではなく)OracleのSQLにbooleanデータ型がないだけでなく、代わりに何を使用するかについて明確な推奨事項もありません。 asktomの this thread を参照してください。 'Y'/'N'が英語に依存していることを誰かが指摘すると、CHAR(1) 'Y'/'N'の推薦からNUMBER(1) 0/1に切り替わります。ドイツのプログラマーは代わりに'J'/'N'を使うかもしれません。

最悪のことは、彼らが''=NULLの愚かさを擁護するのと同じように、彼らがこの愚かな決定を擁護することです。

237

いや。

使える:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- Oracleを楽しむ

または、ここで説明されているようにchar Y/N を使用します

45
Bohdan

Ammoqとkupaの答えによれば、デフォルトの0でnumber(1)を使い、nullを許しません。

これが示すための列を追加です。

ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);

これが誰かに役立つことを願っています。

34
Alex Stephens

SQLレベルではなく、それは残念ですPLSQLには1つありますが

14
vc 74

いいえ、Oracle Databaseにはブール型はありませんが、次のようにして実行できます。

チェック制約を列に置くことができます。

テーブルにチェック列がない場合は、追加できます。

ALTER TABLE table_name
ADD column_name_check char(1) DEFAULT '1';

レジスタを追加すると、デフォルトでこの列は1になります。

ここでは、列の値を制限するチェックを入れます。ただ1または0を入れるだけです。

ALTER TABLE table_name ADD
CONSTRAINT name_constraint 
column_name_check (ONOFF in ( '1', '0' ));
9
Roberto Góes

Boolean型は存在しませんが、その代わりに1/0(type number)、 'Y'/'N'(type char)、または 'true'/'false'(type varchar2)を使用できます。

8
kupa

pl/sqlで使用されるブール型 がありますが、列のデータ型として使用できるものはありません。

スペースを節約する一般的な方法は、NUMBERではなくboolean値をOracle CHARとして格納することです。

4
Pranay Rana

まだ誰も言及していないからといって、RAW(1)を使うことも一般的なやり方のようです。

3
Filburt