Hallo zusammen,
ich finde keine solide Lösung für eine
SQL Abfrage mit verketteten Feldern.
Erstmal ein paar Details:
Ich habe eine Datenkank "KontaktDB" auf einem
MSSQL-Server (
MSDE 2000 SP3).
In der
DB gibe es eine Tabelle "Adressen" die wie folgt strukturiert ist:
ID UniqueIdentifier NOT NULL Default newid()
Name nvarchar(30)
vorname nvarchar(30)
Strasse nvarchar(30)
PLZ nvarchar(5)
Ort nvarchar(30)
Telefon nvarchar(30)
Email nvarchar(30)
Ich muss nun eine View basteln, die mit die Adressdaten formattiert in einer einzigen Spalte ausgibt.
(etwa so)
Vorname Name
Strasse
PLZ ORT
Tel: Telefon
Email: Email
Derzeit verkette ich die Felder in der Abfrage mit "+" und die Zeilenumbrüche mache ich mit +CHAR(13)+CHAR(10)
Die fertige Abfrage sie so aus:
SQL-Code:
SELECT VORNAME+' '+NAME+CHAR(13)+CHAR(10)+
STRASSE+CHAR(13)+CHAR(10)+
PLZ+' '+ORT+CHAR(13)+CHAR(10)+
'Tel: '+TELEFON+CHAR(13)+CHAR(10)+
'Email: '+EMAIL AS Kontakt
FROM Adressen
Generell funktioniert das Ganze, nur habe ich ein Problem, wenn eines der Felder NULL ist (z.B. keine Telefonnummer eingetragen).
Dann wird automatisch der komplette verkettete Wert "Kontakt" = NULL
Da die Datenbank aus einer fremden Anwendung heraus gefüllt wird, könnte ich nur verhindern das keine NULL Werte in die Tabelle geschrieben werden, indem ich Defaults setze.
Da es sich dabei um eine fremde
DB handelt möchte ich mir Änderungen an den bestehenden Tabellenstrukturen jedoch als letzte Möglichkeit offen lassen.
Gibt es eine Möglichkeit die Abfrage so zu gestalten, das die Verkettung nicht als NULL ausgegeben wird eines der Felder NULL ist ?
Wenn ja, dann noch einen Schritt weiter ...
Angenommen "TELEFON" ist NULL ... kann man das 'Tel: ' und den Zeilenumbruch unterdrücken wenn in dem jeweiligen Datensatz keine Telefonnummer vorhanden ist ?
Danke,
Jens