Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datensatz löschen wenn Felder leer (NULL) sind (https://www.delphipraxis.net/187522-datensatz-loeschen-wenn-felder-leer-null-sind.html)

ekatharina 6. Dez 2015 15:01

Datenbank: Firebird • Version: 2.5 • Zugriff über: bde

Datensatz löschen wenn Felder leer (NULL) sind
 
Seit Tagen versuche ich per Delete Datensätze zu löschen. Sowie eines der Felder jedoch keinen Wert (also NULL) enthält scheitert die SQL.
... is null ... ... = NULL ...
Wo finde ich Hilfe zur Syntax?
Danke für jeden Hinweis.

stahli 6. Dez 2015 15:15

AW: Datensatz löschen wenn Felder leer (NULL) sind
 
Hallo und willkommen in der DP. :-)

Die BDE unterstützt Standard-SQL.

So aus der Erinnerung: "delete from TABLE where FIELD is null"

Ich hoffe, das stimmt so (ist länger her bei mir).

TBx 6. Dez 2015 15:17

AW: Datensatz löschen wenn Felder leer (NULL) sind
 
Allgemein findest Du das direkt in der Firebirddokumentation.
Poste doch mal Deinen Tabellenaufbau und erkläre, was Du löschen möchtest, dann können wir versuchen, Dir einen Schubs in die richtige Richtung zu geben.

jobo 6. Dez 2015 15:39

AW: Datensatz löschen wenn Felder leer (NULL) sind
 
Was bedeutet denn "scheitert"?
Gibt es einen Fehler? Welchen? Oder wird einfach nicht gelöscht?
Sowohl Firebird als auch die BDE gehorchen auf "<feldname> is NULL". In einer Löschanweisung -du sprichst von "eines der Felder jedoch keinen Wert"- muss das Löschkriterium dann ggF. mit "or <feldname> is null" kombiniert werden. Bei 2 Kriterienfeldern dann bspw.:
Code:
delete from <tabelle>
 where (a_id = :param1 and b_id = :param2)
    or (a_id is null and b_id = :param2)
    or (a_id = :param1 and b_id is null)
   [or (a_id is null and b_id is null)]*
* damit werden u.U. sehr viele Datensätze gelöscht, kommt drauf an, ob das gewollt ist.

Gibt es noch mehr delete Kriterien, die Null sein können, erweitern sich die Kombinationen entsprechend.

BDE selbst arbeitet mit "Local SQL", siehe z.B. hier http://www.jpmartel.com/bu02lsql.htm#6.3%20Local)
Firebird findest Du hier: http://www.firebirdsql.org/en/reference-manuals/

ekatharina 6. Dez 2015 18:41

AW: Datensatz löschen wenn Felder leer (NULL) sind
 
Da staune ich nicht schlecht: Habe sicherlich auf Euren Seiten schon hunderte Mal reingeschaut aber noch nie etwas nachgefragt. Und nun am Sonntag-Nachmittag gleich drei Antworten.:-D
[Feld] is null war schon die Lösung.
Ich hatte
[Feld] = is null eingegeben.

Vielen Dank und noch 'nen schönen Nikolaus-Abend

jobo 6. Dez 2015 18:59

AW: Datensatz löschen wenn Felder leer (NULL) sind
 
Prima, dann die obligatorische Warnung heute mal am Schluss- anscheinend nuckeln alle noch an Ihrer Schokolade:
BDE so schnell wie möglich austauschen. Taugt höchstens noch zum Basteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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-2025 by Thomas Breitkreuz