![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBConsole
Abfrage NULL <> 1
Ich hab in meiner Tabelle in SMALLINT Feld, wo ich die Werte NULL, 0 oder 1 habe
für meine Abfrage brauche ich jetzt alle die nicht 1 sind.
SQL-Code:
funktioniert ja nicht.
SELECT * FROM TAB_1 WHERE TYP <> 1;
Welche der folgenden Abfrage ist nun besser zu verwenden ?
SQL-Code:
SELECT * FROM TAB_1 WHERE TYP = 0 OR TYP IS NULL;
SELECT * FROM TAB_1 WHERE COALESCE(TYP, 0) = 0; |
Re: Abfrage NULL <> 1
Hallo,
obwohl man eigentlich dem Optimizer der DB die Arbeit überlassen sollte, würde ich an deiner Stelle das erste Konstrukt nehmen. Beim zweiten muss nämlich jeder(!) Datensatz mit Coalesce behandelt werden, bevor er abgefragt wird. Beim ersten Konstrukt kann der Optimizer durch die OR-Verbindung schneller Datensätze auswählen/abweisen. Da ich FB nicht genau kenne, kann ich nicht abschätzen, wie gut der Optimizer das erkennt. Du solltest allerdings erstmal auf die Lesbarkeit schauen; und da ist das erste Konstrukt auch etwas klarer durchschaubar, weil direkt steht, was du eigentlich willst. Die meisten haben mit Coalesce immer noch etwas Probleme... Bis dann Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz