AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL mit parameter und NULL oder normalen Werten
Thema durchsuchen
Ansicht
Themen-Optionen

SQL mit parameter und NULL oder normalen Werten

Ein Thema von TurboMagic · begonnen am 5. Mär 2023 · letzter Beitrag vom 5. Mär 2023
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#1

SQL mit parameter und NULL oder normalen Werten

  Alt 5. Mär 2023, 13:40
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
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
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#2

AW: SQL mit parameter und NULL oder normalen Werten

  Alt 5. Mär 2023, 14:03
Probiere mal explizit den Datentyp für den Parameter zu setzen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQL mit parameter und NULL oder normalen Werten

  Alt 5. Mär 2023, 14:21
Mit dem Parameter ist alles OK, aber das SQL ... naja
Zitat:
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Mär 2023 um 14:49 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz