Seite 1 von 1

NULL - Werte beim Typ Boolean

Verfasst: Di, 19.07.2011 18:48
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!

Re: NULL - Werte beim Typ Boolean

Verfasst: Di, 19.07.2011 20:23
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) 2202 mal betrachtet
Gruß R

Re: NULL - Werte beim Typ Boolean

Verfasst: Di, 19.07.2011 22:45
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

Re: NULL - Werte beim Typ Boolean

Verfasst: Mi, 20.07.2011 07:42
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!

Re: NULL - Werte beim Typ Boolean

Verfasst: Mi, 20.07.2011 18:55
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)

Re: NULL - Werte beim Typ Boolean

Verfasst: Mi, 20.07.2011 20:04
von F3K Total
Hallo NTClient,
OOo sagt dazu:
SQL_direkt.png
SQL_direkt.png (3.52 KiB) 2160 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

Re: NULL - Werte beim Typ Boolean

Verfasst: Mi, 20.07.2011 20:38
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.

Re: NULL - Werte beim Typ Boolean

Verfasst: Mi, 20.07.2011 22:22
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