![]() |
AW: Wie mit Feldern vergleichen, die (NULL) sind
ja, es gibt mehrere Spalten die NULL sein können.
|
AW: Wie mit Feldern vergleichen, die (NULL) sind
Ja, es gibt mehrere Spalten die NULL sind.
sorry, Doppelpost |
AW: Wie mit Feldern vergleichen, die (NULL) sind
SQL-Code:
sollte eigentlich eine Fehlermeldung produzieren
Feld<>Null
Wenn Du ein Feld auf Null oder einen Inhalt prüfen willst dann so:
SQL-Code:
Gruß
..
and (Feld=irgendwas or Feld is null) ... K-H |
AW: Wie mit Feldern vergleichen, die (NULL) sind
feld<>NULL ist ein valider Ausdruck und sollte keine Fehlermeldung ausgeben. :gruebel: <-- edit.
Nichts ist == NULL. Ebenso ist nichts <> NULL. NULL ist nicht vergleichbar. Daher gibt es IS NULL und IS NOT NULL.
Code:
Im Beispiel von p80286 sieht man, wie komplex die Arbeit mit NULL Werten werden kann. Daher sollte man davon Abstand nehmen, bzw. dreimal überlegen, ob NULL als abzufragendes Datum wirklich notwendig ist.
Update table set x=y where x is null
|
AW: Wie mit Feldern vergleichen, die (NULL) sind
Zitat:
Zitat:
Also ich muß da nur einmal überlegen, ob ich z.B. eine Selection "where Feld is Null" anfordere oder nicht. Oder besser, ich muß eigentlich gar nicht überlegen, denn da gibt's nicht wirklich was zu überlegen, wenn man die Records einer Tabelle, deren Feld X Null ist, benötigt, z.B.:
Code:
Oder in Delphi:
select * from PERSONEN where PERS_ADRES is null
Delphi-Quellcode:
Was also sollte man da groß überlegen? Und was soll am Beispiel von p80286 komplex sein?
Qset_Personen.Filter := 'PERS_ADRES is null';
|
AW: Wie mit Feldern vergleichen, die (NULL) sind
er testet auf ungleich null
update Tabelle set X=Y where x<>NULL richtig wäre also IS NOT NULL update Tabelle set X=Y where x is not null |
AW: Wie mit Feldern vergleichen, die (NULL) sind
Ja und? Wenn du nochmal hinschaust, dann erkennst du vielleicht, daß das nichts mit dem Inhalt meines Postings zu tun hat.
Der Titel des Themas lautet übrigens: Mit Feldern verleichen, die NULL sind. Dazu wird hier gegensätzliches behauptet, so z.B.: "feld<>NULL ist ein valider Ausdruck und sollte keine Fehlermeldung ausgeben" im Gegensatz zu "
SQL-Code:
sollte eigentlich eine Fehlermeldung produzieren". Das kann man so pauschal nun aber nicht behaupten, weil nicht ganz klar ist, ob nun Delphi oder SQL gemeint ist, denn via SQL funktioniert zwar ein "feld<>NULL", in Delphi dagegen nicht.
Feld<>Null
Das war aber, wie gesagt, weder Thema noch Inhalt meines Postings, sondern diverse Behauptung meines Vorposters, die ich nicht mit meinen Vorstellungen vereinbaren konnte, was ich mit dem Hinweis, daß ich das nicht verstehe, zum Ausdruck gebracht habe. Sonst alles klar? Gut geschlafen? Schmeckt der Kaffee? :-D |
AW: Wie mit Feldern vergleichen, die (NULL) sind
Zitat:
Code:
Natürlich könnte man COALESCE oder ISNULL nehmen, aber da geht dann der Vorteil eines Index schnell flöten.
select * from Tabelle
Where (Name is null or Name = :Name) or (Foobar is Null or Foobar = :Foobar) ... Bei einer Abfrage auf 'Daten vorhanden/nicht vorhanden' ist das natürlich vollkommen ok, aber wenn die Spalte in Reportfiltern vorkommt, ist das dann wieder blöd, wg. (siehe oben). Zitat:
Etwas OT: Stell dir vor, Deine Tabelle enthält eine Spalte 'A varchar(10) NULL'. Du schreibst nun einen Report und möchtest das Ergebnis filtern, so etwa:
Delphi-Quellcode:
Nun kann die Spalte A NULL-Werte enthalte, weil, ist ja nicht komplex. Nun willst Du auch darauf abfragen können. Wie machst Du das jetzt? Dein Parameter 'A' kann ja schlecht 'NULL' enthalten, also?
select * from Tabelle where A=:A
Code:
Stimmt das überhaupt so? (Query Optimizer lieben deartige Konstrukte übrigens). Wie Du siehst, ist das spätestens jetzt komplex, vor allen Dingen dann, wenn sich das über alle Spalten hinzieht. Also lieber: Finger weg (oder keine Reports mit NULL-Filtermöglichkeit).
select * from Tabelle
where (:A is not null and A=:A) or (:A is null and A is null) Wenn man einen Report benötigt, der auch alle z.B. unausgefüllten TelefonNr-Spalten zeigt, dann lieber explizit als separaten Report oder man deklariert die Telefon-Spalte als NOT NULL und dann hat der leere String die Bedeutung: 'unausgefüllt'. Aber klar: Manchmal geht es nicht anders und dann ist man auch wieder froh über NULL (LEFT JOIN z.B.) PS: Das mit dem Kaffee war ein gutes Stichwort. |
AW: Wie mit Feldern vergleichen, die (NULL) sind
Zitat:
Ich hab z.B. eine Tabelle, da kriegt der Kunde regelmäßig neue Adressen rein, die sind unvollständig, mal fehlt die Straße, mal die Telefonnummer, mal die Postleitzahl usw. Um das zu ergänzen, kann er sich alle Kunden-Records anzeigen lassen, bei denen die Telefon-Nr. Null ist. Wo soll da ein Problem sein? Die Alternativen wären entweder im Grid alle Kunden-Datensätze durchzublättern, um optisch zu überprüfen, ob da irgendwo was fehlt – nicht sehr komfortabel. Oder die Datensätze zu sortieren und nach ganz oben oder ganz unten zu springen, um die Null-Einträge zu sehen – ein wenig komfortabler, aber nicht optimal. Zitat:
Zitat:
Zitat:
Zitat:
Hat wenigstens der Kaffee geschmeckt? |
AW: Wie mit Feldern vergleichen, die (NULL) sind
Danke für Eure Hilfe!
is NULL ist die Lösung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 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