NULL - Werte beim Typ Boolean

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

NULL - Werte beim Typ Boolean

Beitrag von NTClient »

Hallo! Beim SQL-Befehl für boolean-Felder habe ich ein Problem:

schreibe ich unter Extras-SQL folgenden Befehl ins Kommando:

SELECT "IDProj", "Bezeichnung1", "abgeschlossen" FROM "ID_Projekte" WHERE "abgeschlossen" <> null

... erscheint: "Befehl erfolgreich ausgeführt."

Schreibe ich diese Zeile in die SQL-Ansicht einer Abfrage erscheint: "Syntax error in SQL expression" bzw. wenn ich in der Entwurfsansicht einer Abfrage für "abgeschlossen" <> Null reinschreibe erscheint "syntax error, unexpected NULL"

Ich will eigentlich, dass die Abfrage mir die Projekte liefert, für die "abgeschlossen" = 'false' ist oder für die kein Eintrag im Feld vorhanden ist.

Die Datenbank ist eine HSQL 1.8.

Gruß Bernd!
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: NULL - Werte beim Typ Boolean

Beitrag von F3K Total »

Hallo,
versuch es einmal mit

Code: Alles auswählen

SELECT  "IDProj", "Bezeichnung1", "abgeschlossen" FROM "ID_Projekte" MINUS SELECT "IDProj", "Bezeichnung1", "abgeschlossen" FROM "ID_Projekte" where "abgeschlossen"=true
und klicke dabei das Feld "SQL Komando direkt ausführen" an:
SQL_D.png
SQL_D.png (973 Bytes) 2200 mal betrachtet
Gruß R
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: NULL - Werte beim Typ Boolean

Beitrag von DPunch »

Aloha
NTClient hat geschrieben:Schreibe ich diese Zeile in die SQL-Ansicht einer Abfrage erscheint: "Syntax error in SQL expression" bzw. wenn ich in der Entwurfsansicht einer Abfrage für "abgeschlossen" <> Null reinschreibe erscheint "syntax error, unexpected NULL"
NULL lässt sicht nicht mit logischen Operatoren wie =, <, >, <> etc erfassen, weil es kein echter Wert ist.
Die richtige Syntax für derartiges lautet "<Feld> is null" bzw "<Feld> is not null".

Also im Kontext Deiner Abfrage
NTClient hat geschrieben:dass die Abfrage mir die Projekte liefert, für die "abgeschlossen" = 'false' ist oder für die kein Eintrag im Feld vorhanden ist.

Code: Alles auswählen

SELECT "IDProj", "Bezeichnung1", "abgeschlossen" FROM "ID_Projekte" WHERE "abgeschlossen" = FALSE OR "abgeschlossen" IS NULL
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: NULL - Werte beim Typ Boolean

Beitrag von NTClient »

Aha, Danke!

Ich verstehe nur nicht, warum ich bei Extras - SQL einenn anderen Syntax eingeben muss (kann), als bei der Abfrage in der SQL-Ansicht. Ist mir bei anderer Gelegenheit schon mal aufgefallen.

Gruß Bernd!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: NULL - Werte beim Typ Boolean

Beitrag von DPunch »

Aloha

Prinzipiell ist das kein Syntax-Fehler, sondern nur ein logischer, sprich Du kannst NULL-"Werte" nicht irgendwie vergleichen o.Ä.
Einen Syntax-Fehler solltest Du dabei normalerweise nicht kriegen. (und ich kriege auch keinen, gerade bei der HSQLDB unter OOo 3.2.1 getestet)
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: NULL - Werte beim Typ Boolean

Beitrag von F3K Total »

Hallo NTClient,
OOo sagt dazu:
SQL_direkt.png
SQL_direkt.png (3.52 KiB) 2158 mal betrachtet
was ich so verstehe, dass OOo nicht alle in der verwendeten Datenbank (hier HSQL) verfügbaren Befehle interpretieren kann.
In meinem Code z.B. das

Code: Alles auswählen

MINUS SELECT ...
Gruß R
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: NULL - Werte beim Typ Boolean

Beitrag von DPunch »

Aloha
F3K Total hat geschrieben:OOo sagt dazu:
(...)
was ich so verstehe, dass OOo nicht alle in der verwendeten Datenbank (hier HSQL) verfügbaren Befehle interpretieren kann.
Das ist korrekt, aber zumindest in diesem Fall kein Faktor, denn ein über Extras -> SQL abgesetzter Befehl wird zuerst von Base interpretiert, schlägt dabei etwas fehl, wird der Befehl direkt an die Datenbank durchgereicht.
Daher trifft die Aussage
NTClient hat geschrieben:warum ich bei Extras - SQL einenn anderen Syntax eingeben muss (kann), als bei der Abfrage in der SQL-Ansicht
nur insofern zu, dass für manche unter Extras -> SQL erfolgreich ausgeführte Befehle in der Abfrage der Native-Mode aktiviert sein muss, aber dass betrifft ja nicht die Syntax an sich, sondern nur eine gesezte oder nicht gesetzte Option.

Die Syntax "IS NULL" ("IS NOT NULL") ist SQL-Standard und wird von allen mir bekannten DBMS verwendet und auch von Base korrekt interpretiert.
Vergleichsoperatoren wie "<",">","<>" etc auf eine Null-Spalte sind wie gesagt kein Syntax-Fehler, sondern das Ergebnis ist lediglich immer NULL oder FALSE, je nach DBMS.
Daher gehe ich stark davon aus, dass NTClient einen Typo in seiner ursprünglichen Abfrage hatte.
Alles andere würde mich stark verwundern und eine Beispieldatei oder ein Beispielcode zum Reproduzieren der Fehlermeldung würde mich in diesem Fall sehr interessieren.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: NULL - Werte beim Typ Boolean

Beitrag von F3K Total »

Hallo DPunch,
ja, da habe ich wohl die Frage nicht richtig gelesen, gemeint war "Extras/SQL..." ich dachte es geht um "SQL-Kommado direkt ausführen"
Ich verstehe es jetzt also so, dass man unter "Extras/SQL..." die Befehle ebenso direkt an die DB durchreichen kann, wie bei der Erzeugung von Views oder Abfragen, wenn man den Button "SQL-Kommado direkt ausführen" anklickt.

Beste Grüße von Rik
Antworten