none
über mehrere Spalten kopieren RRS feed

  • Frage

  • Hallo,

    ich habe eine DB-Tabelle mit 3 Spalten (StrasseUndHausNr, Strasse, HausNr).
    Die Spalte "StrasseUndHausNr" ist mit Daten gefüllt, die beiden anderen Spalten sind leer.

    Nun möchte ich durch alle Zeilen iterieren und die Spalten "Strasse" und "HausNr" mit den Werten aus der Spalte "StrasseUndHausNr" füllen.
    Das Problem ist, ich habe keinen Primärschlüssel.

    Ist es dennoch irgendwie möglich?

    Gruß Sven

    Freitag, 1. Oktober 2010 13:13

Antworten

  • Hallo Sven,

    falls Du die CLR-Integration einsetzen möchtest, implementiere dann die CLR-Funktionen:

    1. dbo.GetStrasseByStrasseUndHausNr(@StrasseUndHausNr nvarchar(128))
    2. dbo.GetHausNrByStrasseUndHausNr(@StrasseUndHausNr nvarchar(128))

    Update wird dann so aussehen:

    update @t1
    set Strasse = dbo.GetStrasseByStrasseUndHausNr(StrasseUndHausNr),
    HausNr = dbo.GetHausNrByStrasseUndHausNr(StrasseUndHausNr)
    

     


    Gruß Yury
    Freitag, 1. Oktober 2010 15:48

Alle Antworten

  • Hallo Sven,

    ja es ist mit einem Update möglich. Wie sind die Daten in der Spalte 'StrasseUndHausNr' getrennt? (Komma, Semikolon?)


    Gruß Yury


    So, hier ist meine Lösung:

    declare @t1 as table 
    (StrasseUndHausNr nvarchar(128),
     Strasse nvarchar(56),
     HausNr nvarchar (28))
    
    insert into @t1(StrasseUndHausNr)
    values
    ('Strasse1,1a'),
    ('Strasse2,2b'),
    ('Strasse3,3c')
    
    update @t1
    set Strasse = LEFT(StrasseUndHausNr,PATINDEX('%,%',StrasseUndHausNr)-1),
    HausNr = RIGHT(StrasseUndHausNr,LEN(StrasseUndHausNr)-PATINDEX('%,%',StrasseUndHausNr))
    
    select * from @t1
    

    Gruß Yury
    Freitag, 1. Oktober 2010 13:50
  • Hallo Yury,

    danke für die Antwort.
    Also Strasse und HausNr haben kein Trennzeichen ('Waldstr 8c').
    Dafür habe ich bereits ein Regex und versuche es über die CLR-Integration.

    Muss man eigentlich die CLR-Integration nutzen, um Regex zu benutzen?

    Ich habe eine CLR-SP geschrieben, welche den Wert der Spalten "StrasseUndHausNr" bekommt und "@Strasse" output und "@HausNr" als output.
    Nachdem die SP ausgeführt wurde enthalten die Output-Variablen die richtigen Werte (also Strasse und HausNr).
    Und diese muss ich nun irgendwie in deine Update-Statement einpflegen.
    Auch weiß ich nicht wo ich den Prozeduraufruf einfügen soll.

    Gruß Sven

    Freitag, 1. Oktober 2010 14:28
  • Hallo Sven,

    falls Du die CLR-Integration einsetzen möchtest, implementiere dann die CLR-Funktionen:

    1. dbo.GetStrasseByStrasseUndHausNr(@StrasseUndHausNr nvarchar(128))
    2. dbo.GetHausNrByStrasseUndHausNr(@StrasseUndHausNr nvarchar(128))

    Update wird dann so aussehen:

    update @t1
    set Strasse = dbo.GetStrasseByStrasseUndHausNr(StrasseUndHausNr),
    HausNr = dbo.GetHausNrByStrasseUndHausNr(StrasseUndHausNr)
    

     


    Gruß Yury
    Freitag, 1. Oktober 2010 15:48
  • Schön, so werde ich es machen.

    Vielen Dank
    Gruss Sven

    Samstag, 2. Oktober 2010 01:49