it-swarm.com.de

Gibt es einen Booleschen Typ in Oracle-Datenbanken?

Gibt es einen Booleschen Typ in Oracle-Datenbanken, ähnlich dem Datentyp BIT in Ms SQL Server?

225
Peder

Der boolesche Datentyp fehlt nicht nur in Oracle SQL (nicht in PL/SQL), sondern sie haben auch keine klare Empfehlung, was stattdessen verwendet werden soll. Siehe dieser Thread auf Asktom. Vom Empfehlen von CHAR(1) 'Y'/'N' wechseln sie zu NUMBER(1) 0/1, wenn jemand darauf hinweist, dass 'Y'/'N' Von der englischen Sprache abhängt, während z. Deutsche Programmierer könnten stattdessen 'J'/'N' Verwenden.

Das Schlimmste ist, dass sie diese dumme Entscheidung genauso verteidigen, wie sie die ''=NULL - Dummheit verteidigen.

245

Nee.

Kann benutzen:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- Oracle genießen

Oder verwenden Sie das Zeichen J/N wie hier beschrieben

48
Bohdan

Gemäß den Antworten von Ammoq und kupa verwenden wir die Zahl (1) mit dem Standardwert 0 und lassen keine Nullen zu.

hier ist ein Spalte hinzufügen um zu demonstrieren:

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

Hoffe das hilft jemandem.

34
Alex Stephens

Nicht auf SQL-Ebene und das ist schade. Es gibt jedoch eine in PLSQL

14
vc 74

Nein, es gibt keinen Booleschen Typ in Oracle Database. Sie können jedoch folgendermaßen vorgehen:

Sie können einer Spalte eine Prüfbedingung hinzufügen.

Wenn Ihre Tabelle keine Kontrollspalte enthält, können Sie diese hinzufügen:

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

Wenn Sie ein Register hinzufügen, erhält diese Spalte standardmäßig 1.

Hier setzen Sie ein Häkchen, das den Spaltenwert begrenzt, nur 1 oder 0

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

Nein, es gibt keinen Booleschen Typ, aber stattdessen können Sie 1/0 (Typnummer) oder 'Y'/'N' (Typzeichen) oder 'true'/'false' (Typ varchar2) eingeben.

8
kupa

Es gibt einen booleschen Typ zur Verwendung in pl/sql , aber keinen, der als Datentyp einer Spalte verwendet werden kann.

Ein häufiger platzsparender Trick ist das Speichern von booleschen Werten als Oracle CHAR anstelle von NUMBER:

4
Pranay Rana

Nur weil es noch niemand erwähnt hat: Auch die Verwendung von RAW (1) scheint gängige Praxis zu sein.

3
Filburt