Announcement

Collapse
No announcement yet.

Update des eigenen Datensatzes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update des eigenen Datensatzes

    Ich möchte ein Feld mit einem Teilstring des selben Feldes überschreiben, kämpfe aber mit dem Loop...

    In unserer Adressen-Tabelle steht im Feld "Name" noch "Herr" oder "Frau" vor dem eigentlichen Namen (z.B. Herr Heinrich Müller). Es soll nur noch der Name im Feld stehen.
    Der Select des Substrings sieht so aus:

    select SUBSTRING(Name, 6,30)
    FROM adressen
    where Name like 'Herr%'

    Nun muss ich ja im Update-script einen Loop haben, damit ich immer nur den einen Datensatz aktualisiere.
    Ich habe auch eine ID von der Adresse. Darum habe ich folgendes versucht:

    update adressen
    set Name= (
    select SUBSTRING(Name, 6,30)
    FROM adressen a
    WHERE a.Name like 'Herr%'
    )
    where a.adress_id = adress_id
    COMMIT

    Fehler: "The multi-part identifier "a.adress_id" could not be bound".
    Ich vermute, ich muss einen Loop bauen, aber auch meine Cursor-Versuche misslingen...
    Für irgend jemanden von Euch ist das sicher ein totales Peanut-Problem und rasch gelöst...

  • #2
    Ich vermute mal du denkst da gerade nur zu kompliziert. Es bedarf keines subselects.

    [Highlight=Sql]UPDATE adressen
    SET Name = SUBSTRING(Name, 6,30)
    WHERE Name like 'Herr%'[/Highlight]

    Edit : deinen like solltest du aber nochmal checken ob es nicht sinnvoll wäre auf auf das Leerzeichen nach dem Herr zu prüfen. Sonst heißt z.B. nachher ein potentieller "Herrmann" nur noch "nn".

    Edit 2: Dein Gedankengang mit einer "Loop" ist übrigens nicht hilfreich und vielleicht Teil eines Vorstellungsproblem. Sql beschreibt KEINEN Algorithmus sondern ist eine Beschreibung des gewünschten Ergebnisses unabhängig vom Algorithmus wie das Ergebnis ermitttelt wird. Wenn man beim erstellen eines Sql Statements ~algorithmisch~ denkt stellt man sich üblicherweise nur ein Bein.
    Zuletzt editiert von Ralf Jansen; 20.12.2017, 21:06.

    Comment


    • #3
      Das war eine super Erklärung.
      Danke vielmals!

      Comment

      Working...
      X