ich steh gerade etwas auf dem Schlauch.
Ich habe eine Spalte kontonr(character 10).
Ich will prüfen ob eine Kontonummer richtig ist.
Meine Abfrage (vereinfacht):
select case when kontonr = '0000001234' then 'richtig' else 'falsch' end
from konten
where kontonr = '0000001234'
Wenn die Kontonr in der Tabelle gefunden wird, bekomme ich ein richtig. Existiert die Kontonr allerdings nicht, bekomme ich kein Ergebnis.
Leider habe ich keine Ahnung warum das so ist.
Ja, mir ist auch bewusst dass die nicht immer zutrifft, daher müsste ja meiner Meinung nach das “else” greifen, oder?
Nochmal genauer:
testdb=# select * from konten;
kontonr
------------
0000001234
(1 Zeile)
testdb=# select case when kontonr = '0000001234' then 'richtig' else 'falsch' end
testdb-# from konten
testdb-# where kontonr = '0000001234';
case
---------
richtig
(1 Zeile)
Und jetzt mein Problem:
testdb=# select case when kontonr = '0000001234' then 'richtig' else 'falsch' end
testdb-# from konten
testdb-# where kontonr = '0000001235';
case
------
(0 Zeilen)
Hier findet die where-Bedingung keine Konto, soweit so gut. Aber warum liefert mir mein case when keinen Rückgabewert, eigentlich sollte doch “falsch” kommen?