Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL mit parameter und NULL oder normalen Werten (https://www.delphipraxis.net/212614-sql-mit-parameter-und-null-oder-normalen-werten.html)

TurboMagic 5. Mär 2023 13:40

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

SQL mit parameter und NULL oder normalen Werten
 
Hallo,

gegeben sei ein SQL Statement wie dieses:

select ID, BelegNr, BelegDatum
from MyTable
where (BelegNr = :pBelegNr)

Jetzt kann es in der Tabelle Belege geben, die schon eine ID haben aber noch keine BelegNr.
BelegNr ist ein Integer.

Delphi-Quellcode:
FMyQuery.ParamByName('pBelegNr').AsInteger := 123;
FMyQuery.Open;
Sollte also den Beleg 123 "beschaffen". Soweit funktioniert das auch.
Aber wie beschaffe ich alle Belege die noch NULL sind?

Delphi-Quellcode:
FMyQuery.ParamByName('pBelegNr').Clear;
FMyQuery.Open;
Sollte das soweit ich die Hilfe verstehe tun, macht es aber nicht.
Ich bekomme 0 Records geliefert. Baue ich den Select so um:

select ID, BelegNr, BelegDatum
from MyTable
where (BelegNr is NULL)

bekomme ich problemfrei alle NULL Belege...
Woran kann das liegen? Was müsste ich ändern, damit es mit dem parameter für
beide Szenarien funktioniert?

Grüße
TurboMagic

Olli73 5. Mär 2023 14:03

AW: SQL mit parameter und NULL oder normalen Werten
 
Probiere mal explizit den Datentyp für den Parameter zu setzen...

himitsu 5. Mär 2023 14:21

AW: SQL mit parameter und NULL oder normalen Werten
 
Mit dem Parameter ist alles OK, aber das SQL ... naja :roll:
Zitat:

SQL-Code:
where (BelegNr = :pBelegNr)

= mit NULL liefert immer NULL und niemals True oder False.

SQL-Code:
where (BelegNr is null and :pBelegNr is null) or (BelegNr = :pBelegNr)

where (BelegNr is not distinct from :pBelegNr)

oder was irgendwas coalesce

...
Delphi-Quellcode:
FMyQuery.ParamByName('pBelegNr').Clear;
// oder
FMyQuery.ParamByName('pBelegNr').Value := Null;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 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