Ms SQL ServerのBIT
データ型のように、Oracleデータベースにはブール型がありますか。
(PL/SQLではなく)OracleのSQLにbooleanデータ型がないだけでなく、代わりに何を使用するかについて明確な推奨事項もありません。 asktomの this thread を参照してください。 'Y'/'N'
が英語に依存していることを誰かが指摘すると、CHAR(1) 'Y'/'N'
の推薦からNUMBER(1) 0/1
に切り替わります。ドイツのプログラマーは代わりに'J'/'N'
を使うかもしれません。
最悪のことは、彼らが''=NULL
の愚かさを擁護するのと同じように、彼らがこの愚かな決定を擁護することです。
Ammoqとkupaの答えによれば、デフォルトの0でnumber(1)を使い、nullを許しません。
これが示すための列を追加です。
ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);
これが誰かに役立つことを願っています。
SQLレベルではなく、それは残念ですPLSQLには1つありますが
いいえ、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' ));
Boolean型は存在しませんが、その代わりに1/0(type number)、 'Y'/'N'(type char)、または 'true'/'false'(type varchar2)を使用できます。
pl/sqlで使用されるブール型 がありますが、列のデータ型として使用できるものはありません。
スペースを節約する一般的な方法は、NUMBERではなくboolean値をOracle CHARとして格納することです。
まだ誰も言及していないからといって、RAW(1)を使うことも一般的なやり方のようです。