SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC

Beitrag von Stephan »

Hallo,

ich habe in Base folgende Abfrage erstellt:

Code: Alles auswählen

SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC
Base liefert hierbei als Ergebnis-/Abfragetabelle 12 Datensätze, es müssten jedoch erheblich mehr sein

Ich habe in der Datentabelle in allen Datensätzen das Feld "TelefonZentrale" geprüft, es gibt wirklich mehr als 12 Datensätze wo das Feld leer ist, also nicht etwa ein Leerzeichen enthält

Das alles beobachtet in LO 6.0.3 mit der internen HSQLDB unter Windows 7.

Hat jemand eine mögliche Erklärung dafür?



und noch eine Beobachtung am Rande:
führe ich obiges SQL im Fenster "SQL-Anweisung ausführen" direkt aus, so erhalte ich scheinbar 13 Treffer. Ich konnte feststellen das der scheinbare 13. Treffer daher rührt das ein Datensatz in einem Feld (NICHT in FID) einen Text enthält der einen manuellen Zeilen-Umbruch beinhalten (STRG+ENTER), wodurch dieser Datensatz geteilt als quasi 2 Treffer ausgegeben wird.



Gruß
Stephan
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC

Beitrag von RobertG »

Hallo Stephan
Stephan hat geschrieben: So, 17.03.2019 20:35

Code: Alles auswählen

SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC
Du fragst hier nur die Datensätze ab, in denen keine Text steht, nicht aber die, die überhaupt keine Daten enthalten, also NULL sind.

Code: Alles auswählen

SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' OR "TelefonZentrale" IS NULL ORDER BY "FID" ASC
Trifft hoffentlich das korrekte Ergebnis - wobei Du mit LIKE eigentlich nur arbeiten solltest, wenn Du Zeichenvergleiche machst, die mehrdeutig sind.

Code: Alles auswählen

SELECT * FROM "Firma" WHERE "TelefonZentrale" = '' OR "TelefonZentrale" IS NULL ORDER BY "FID" ASC
ist vermutlich schneller.

Gruß

Robert
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: SELECT * FROM "Firma" WHERE "TelefonZentrale" LIKE '' ORDER BY "FID" ASC

Beitrag von Stephan »

Hallo Robert,

Danke, das ist es.

Mich hatte irritiert das alle diese Felder gleichen Inhalt enthalten sollten, weil ich den per Makro reinschreibe (als Leerstring), ich hatte jedoch übersehen das es alte Datensätze gibt, die noch nie per Makro geändert wurden.


Gruß
Stephan
Antworten