Zum Inhalt springen

Update Statement MSSQL - Feld wird Null


Gdriver

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von Reinhold
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von RipperFox
Gleich mal isnull falsch geschrieben..
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...