NULL - Werte beim Typ Boolean
Moderator: Moderatoren
NULL - Werte beim Typ Boolean
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!
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
Hallo,
versuch es einmal mit und klicke dabei das Feld "SQL Komando direkt ausführen" an: Gruß R
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
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: NULL - Werte beim Typ Boolean
Aloha
Die richtige Syntax für derartiges lautet "<Feld> is null" bzw "<Feld> is not null".
Also im Kontext Deiner Abfrage
NULL lässt sicht nicht mit logischen Operatoren wie =, <, >, <> etc erfassen, weil es kein echter Wert ist.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"
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
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!
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
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)
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
Hallo NTClient,
OOo sagt dazu: 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 Gruß R
OOo sagt dazu: 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 ...
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: NULL - Werte beim Typ Boolean
Aloha
Daher trifft die Aussage
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.
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.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.
Daher trifft die Aussage
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.NTClient hat geschrieben:warum ich bei Extras - SQL einenn anderen Syntax eingeben muss (kann), als bei der Abfrage in der SQL-Ansicht
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
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
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
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO