Gdriver Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 Hi, bin leider total aus den Updates raus wie es scheint. Möchte folgenden Update Befehl ausführen: update dbo.contactemail1table set emaildisplayas=(select lastname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid) + ', ' + (select firstname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid) + ' (' + emailaddress + ')' where contactserviceid=7; Es wird also emaildisplayas aus 3 Feldern zusammengebaut. Name, Vorname (E-Mail Adresse) Name und Vorname sind in einer Tabelle und die Email Adresse in einer eigene Tabelle (dbo.contactemail1table) Der Befehl klappt so lange, bis eine der 3 Variablen leer / Null ist. Dann wird das Feld emaildisplayas einfach mit NULL gefüllt. Ist schon peinlich aber ich finds gerade nicht, auch in Google wohl die falschen Suchworte benutzt. Freu mich auf eure schnelle Hilfe Gdriver Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 Das mit dem Null ist auch korrekt. Unter mySQL gibt es den Befehl COALESCE, mit dem NULL Zeichenfolge in "" ersetzt werden. Wird wohl bei MS SQL ähnlich gehen bzw ginge wohl auch ein IF-THEN-ELSE HTH Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gdriver Geschrieben 24. September 2008 Autor Teilen Geschrieben 24. September 2008 Hi, coalesce? Also das ich vor die Klammer der Abfrage noch so ne Art "ISNULL" setze? Wie meintest das mit IF Else? So update dbo.contactemail1table set emaildisplayas=if{($lastname=select lastname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid) }is not null{$lastname}) else {''}+..... Sorry bin wie gesagt vollkommen aus dem Thema raus. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Byteloser Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 Du kannst unter T-SQL Ausdrücke, welche NULL liefern mit IsNull(Ausdruck, Wert) ersetzen. Bsp: Declare @test varchar(25) Set @test = NULL Select IsNull(@test, 'neuerWert') In Deinem Fall musst Du den Wert Null im entsprechenden Ausdruck durch IsNull(ausdruck, '') mit Leerstring ersetzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gdriver Geschrieben 24. September 2008 Autor Teilen Geschrieben 24. September 2008 Du kannst unter T-SQL Ausdrücke, welche NULL liefern mit IsNull(Ausdruck, Wert) ersetzen. Bsp: Declare @test varchar(25) Set @test = NULL Select IsNull(@test, 'neuerWert') In Deinem Fall musst Du den Wert Null im entsprechenden Ausdruck durch IsNull(ausdruck, '') mit Leerstring ersetzen. Hi, meinst du so? update dbo.contactemail1table set emaildisplayas=isNull((select lastname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid) , ") + ', ' + isNull((select firstname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid) , ") + ' (' + isNull(emailaddress, ") + ')' where contactserviceid=7; :confused: Ich will doch im Grunde nur, dass er die Werte die er hat hinschreibt, auch wenn eine Variable ggf leer ist. Sprich lastname firstname E-Mail Mustermann Max max.mustermann@mustermann.de Musterfrau frau.musterfrau@musterfrau.de EMailDisplayAS Mustermann, Max (max.mustermann@mustermann.de) Musterfrau, (frau.musterfrau@musterfrau.de) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Youser Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 SET CONCAT_NULL_YIELDS_NULL (Transact-SQL) Das ist was du suchst . Bin da letztens drauf gestoßen, als ich was anderes gesucht habe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 (bearbeitet) SET CONCAT_NULL_YIELDS_NULL (Transact-SQL) Das ist was du suchst . Bin da letztens drauf gestoßen, als ich was anderes gesucht habe. Hast du es auch gelesen? Ja? Und verstanden? *duck* Wenn ich die Beschreibung, zu dem mich dein Link führt, richtig verstanden habe, wird diese Option demnächst wegfallen. Insofern sollte man sie, wenn überhaupt, nur sehr sparsam verwenden... An den Threadersteller: Ich denke, du hast das Prinzip verstanden. Allerdings wäre es sehr hilfreich, wenn du deine Statements ein bißchen formatiert einstellen würdest. BTW: Ich glaube am Ende des Kommandos stimmt etwas mit der Syntax nicht. update dbo.contactemail1table set emaildisplayas=isNull( (select lastname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid ) , ") + ', ' + isNull( (select firstname from dbo.contactnamestable where dbo.contactemail1table.contactserviceid=dbo.contactnamestable.contactserviceid ) , ") + ' (' + isNull(emailaddress, ") + ')' where contactserviceid=7; hth Reinhold Bearbeitet 24. September 2008 von Reinhold Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Youser Geschrieben 24. September 2008 Teilen Geschrieben 24. September 2008 Das es die Option in Zukunft nicht mehr gibt, heißt nich das sie nicht funktioniert. Sie tut doch genau das was der TS möchte. Ich behaupte also schon, dass ich sie verstanden habe Ob er das nun einsetzt oder nicht ist seine Sache. SQL wird allzuoft nicht für die Ewigkeit geschrieben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
RipperFox Geschrieben 26. September 2008 Teilen Geschrieben 26. September 2008 (bearbeitet) Btw: Bei so einer Schreibweise wie der der OP kriegt ich das würgen. Wer schon mal ne DB mit >100 Triggern in der Schreibweise bearbeitet hat, weiß was ich meine.. - Es empfiehlt sich Fremdschlüssel kenntlich zu machen - gRoß UnD KlEiNsChReIbUnG hIlFt - nich alles in eine Zeile quetschen, das Controlling liebt "Lines of Code" - bissl strukturierter aufbauen - JOIN existiert isnull(Spalte1 ,'') + isnull(Spalte2 ,'') isnull(Spalte3 ,'') update ContactEmail1Table set EmailDisplayAs = isnull(LaststName, '') + ', ' + isnull(FirstName, '') + ' (' + isnull(EmailAddress, '') + ')' from ContactNamesTable inner join ContactNamesTable on ContactEmail1Table.ContactServiceId = ContactNamesTable.ContactServiceId where ContactServiceId=7; ungestestet.. Greets Ripper Bearbeitet 26. September 2008 von RipperFox Gleich mal isnull falsch geschrieben.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.