Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL Query eine Spalte Leer bzw. Null, Abfrage ? (https://www.delphipraxis.net/160188-mysql-query-eine-spalte-leer-bzw-null-abfrage.html)

nachtstreuner 1. Mai 2011 22:21

Datenbank: mySql • Version: 4 • Zugriff über: Zeos 6

MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Hallo liebe Delphianer,

stehe mal wieder aufm Schlauch. Meine Abfrage zeigt einen Datensatz mit leerem Feld nicht an.

Code:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Clear;
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := NULL;
          dataM.ZQueryKUNDE.Active := true;
-------------------------------------------------------------------------------------
kd_nr Nachname Status KD_STATUS ORT
-------------------------------------------------------------------------------------
10010001 IMPULS-T NULL NULL Frankfurt
10020003 Werra NULL ROT Köln
10030003 Magna NULL GRÜN Frankfurt
--------------------------------------------------------------------------------------

Der Erste Datensatz wird einfach nicht angezeigt. Woran könnte das liegen ?:cyclops:

s.h.a.r.k 1. Mai 2011 22:23

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Das muss IS NULL heißen und nicht = NULL.

nachtstreuner 1. Mai 2011 22:38

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Hallo S.H.A.R.K

vielen Dank für Deine Antwort.
Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := IS NULL;
          dataM.ZQueryKUNDE.Active := true;
Hier bekomme ich folgende Fehlermeldung:

[Fehler] tools.pas(102): Ausdruck erwartet, aber 'IS' gefunden

Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').Value := ISNULL;
          dataM.ZQueryKUNDE.Active := true;

Hier bekomme ich folgende Fehlermeldung:
[Fehler] tools.pas(102): Undefinierter Bezeichner: 'ISNULL'

s.h.a.r.k 1. Mai 2011 22:39

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Probier mal:
Code:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS IS NULL';

idefix2 1. Mai 2011 22:41

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
In SQL sind Vergleiche mit NULL nicht möglich bzw. liefern immer false.
Statt dessen gibt es die Klauseln IS NULL und IS NOT NULL. NULL kann allerdings deshalb nicht als Parameter an die Query übergeben werden.

nachtstreuner 1. Mai 2011 22:42

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
... und noch eine Variante ergibt eine leere Anzeige :
Delphi-Quellcode:
SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS = :sLEER';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
          dataM.ZQueryKUNDE.ParamByName('sLEER').ISNULL;
          dataM.ZQueryKUNDE.Active := true;

nachtstreuner 1. Mai 2011 22:46

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Hallo idefix,

besten Dank für deinen Hinweis,

so funzt es :
Delphi-Quellcode:
          SQLSUCH := 'SELECT * from tbl_kunde WHERE KD_STATUS IS NULL';
          dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
//          dataM.ZQueryKUNDE.ParamByName('sLEER').ISNULL;
          dataM.ZQueryKUNDE.Active := true;
Also nix mit ParamByName ?

idefix2 1. Mai 2011 23:23

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Geht mit Null einfach nicht. Ist einer von zwei Werten NULL, dann schlägt jeder Vergleich fehl, das Ergebnis ist nämlich dann immer NULL (und nicht true oder false), egal ob auf Gleichheit oder auf Ungleichheit abgefragt wird.

NULL wird allerdings auch als false interpretiert, ebenso wie seine Negation, also werden die entsprechenden Datensätze nie angezeigt.

omata 1. Mai 2011 23:26

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Delphi-Quellcode:
dataM.ZQueryKUNDE.SQL.Text :=
  'SELECT * FROM tbl_kunde WHERE COALESCE(KD_STATUS, '''') = :sLEER';
dataM.ZQueryKUNDE.ParamByName('sLEER').Value := '';
dataM.ZQueryKUNDE.Active := true;

Sir Rufo 1. Mai 2011 23:32

AW: MySQL Query eine Spalte Leer bzw. Null, Abfrage ?
 
Delphi-Quellcode:
SQLSUCH :=
  'SET @SUCH_STATUS = :SUCH_STATUS;'#13#10 +
  'SELECT * from tbl_kunde WHERE ( @SUCH_STATUS IS NULL AND KD_STATUS IS NULL OR KD_STATUS = @SUCH_STATUS );';
dataM.ZQueryKUNDE.SQL.Text := SQLSUCH;
dataM.ZQueryKUNDE.ParamByName('KD_STATUS').Clear;

// Das geht jetzt auch
// dataM.ZQueryKUNDE.ParamByName('KD_STATUS').Value := 'ROT';

dataM.ZQueryKUNDE.Active := true;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.
Seite 1 von 2  1 2      

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