case when - Probleme mit where

Hallo zusammen,

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.

Gruß
Toni

Ähm, schon mal die WHERE - Bedingung verdächtigt?

Andreas

Ähm, schon mal die WHERE - Bedingung verdächtigt?

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?

Warum sollte das ELSE in einer leeren Ergebnissmenge greifen? Wie oft sollte es denn dann greifen?


Andreas