Firebird SQL Statment

MacGyver34

Cadet 2nd Year
Registriert
Jan. 2014
Beiträge
28
Hallo zusammen, ich komme hier derzeit mit einem SQL Statement nicht so ganz klar.
Ich versuche derzeit eine Datenbankabfrage zu bauen die mir aus einer Adresstabelle den Name, Vorname und Kundennummer zu einem Wert zusammenbaut.
Also z.B.

Code:
SELECT Name || ', ' || Vorname || ', ' || NR as Fullname ,anrede,nr, ART, Vorname,Name,Suchbegriff,STRASSE,LAND,PLZ,ORT FROM ADRESSEN WHERE ART = 'K' ORDER by Name ASC;

Leider gibt es in der Datenbank auch Felder in denen Name oder Vorname nicht gefüllt ist, somit kommt dann im Result nur ein ,, Kundenummer zustande.

Jetzt will ich die Abfrage so gestalten das:
wenn Name = NULL then Suchbegriff

Die Spalte Suchbegriff ist in dem fall nämlich der richtige wert. Mal eben de komplette Adressdatenbank aufzuräumen ist derzeit unmöglich bei über 4000 Adressen.

Kann mir hier jemand helfen? Ich komme leider nicht weiter.

Mfg
Stephan
 
Hi,

MySQL? MSSQL? Worum gehts? Es gibt eigentlich in jeder SQL-Sprache auch "IF"

VG,
Mad
 
Steht doch im Topic. Firebird. Ich kann hier mit IF nicht arbeiten, es geht um das reines Statement. Das wird bei einer JDBC abfrage für eine Formularsoftware benötigt.
 
Wenn du im Ansi SQL Standard bleiben willst, kannst du auch Decode verwenden.
(https://www.firebirdsql.org/refdocs/langrefupd21-intfunc-decode.html)
Wenn es dir hauptsächlich nur um eine Spalte geht, sieht das am Ende auch noch einigermaßen ok aus.

Willst du den Zustand mehrerer Spalten mit einbeziehen und auf die vielfältigeren, sich daraus ergebenden Möglichkeiten verschieden reagieren, bist du mit einem mehrzeiligem Case-Statement besser bedient.

Decode mit nur jeweils einer Spalte sähe dann in etwa so aus:
SELECT Decode(Name, null, Suchbegriff, Name || Decode(Vorname, null, '', ',' || Vorname)) || ',' || NR as Fullname
 
Zurück
Oben