Alex: MySQL Substring Update funktioniert nicht

Hallo,

um polnische Postleitzahlen zu aktualisieren verwende ich das Script UPDATE table\_pl
 SET plz = (SUBSTR(plz,0,2) + '-' + SUBSTR(plz,3))
 WHERE 1;

Ziel: Postleitzahlen wie 00815 sollen nach 00-815 umformatiert werden.
Die Tabellenbezeichnung und Spaltenname sind korrekt, ebenfalls die Spaltenattribute (Varchar(6)) - dennoch meldet SQL einen Fehler - warum?

Besten dank für Tipps,

Alex

  1. Hallo

    um polnische Postleitzahlen zu aktualisieren verwende ich das Script UPDATE table\_pl
    SET plz = (SUBSTR(plz,0,2) + '-' + SUBSTR(plz,3))

    Zeichenketten und Minuszeichen lassen sich schlecht addieren. Welche Zahl soll dabei herauskommen.

    Ziel: Postleitzahlen wie 00815 sollen nach 00-815 umformatiert werden.
    Die Tabellenbezeichnung und Spaltenname sind korrekt, ebenfalls die Spaltenattribute (Varchar(6)) - dennoch meldet SQL einen Fehler - warum?

    weil Du die Funktion CONCAT() verwenden solltest.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,
      ich habe das Statement mal geändert nach
      UPDATE ruecknahmestellen\_pl
       SET plz = CONCAT((SUBSTR(plz,1,2), '-', SUBSTR(plz,3)))
       WHERE 1;
      ...also CONCAT eingebaut und ab 1 angefangen zu zählen - leider meldet MySQL immer noch:
      #1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '(plz,1,2), '-', SUBSTR(plz,3)))
          WHERE 1' at line 2

      Ziel: Postleitzahlen wie 00815 sollen nach 00-815 umformatiert werden.

      Beste Grüße

      Alex

      1. Hallo Alex,

        Ziel: Postleitzahlen wie 00815 sollen nach 00-815 umformatiert werden.
        SET plz = CONCAT((SUBSTR(plz,1,2), '-', SUBSTR(plz,3)))

        Du hast eine Klammerebene zuviel:

        SET plz = CONCAT(SUBSTR(plz,1,2), '-', SUBSTR(plz,3))

        liefert brav zurück, was Du haben willst (natürlich in Dein UPDATE-Statement eingebaut).

        Freundliche Grüße

        Vinzenz

  2. Hello,

    um polnische Postleitzahlen zu aktualisieren verwende ich das Script UPDATE table\_pl
    SET plz = (SUBSTR(plz,0,2) + '-' + SUBSTR(plz,3))
    WHERE 1;

    Bei Datenbanken fängt Substring i.d.R. bei 1 an zu zählen.
    Bei MySQL ist es mWn auch so.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. yo Tom,

      lange nichts mehr von dir gelesen, hoffe dir geht es gut.

      Ilja

      1. Hello Ilja,

        lange nichts mehr von dir gelesen, hoffe dir geht es gut.

        zumindest besser :-)

        Ich habe das letzte dreiviertel Jahr intensiv mit der kleinen Zeitung für unseren Ort zu tun gehabt. Und nun wird (hoffentlich) demnächst eine Oberharz-Zeitung und dann eine Harzzeitung daraus. Wir stehen in den Startlöchern.

        Es fehlt mir nur ein XEROX-Techniker hier in der Nähe, um unsere kürzlich erstandene XEROX DC 490 ST in Gang zu bringen. Beim Vorbesitzer lief sie noch bestens... Aber 260kg zu transportieren sind kein Kinderkram.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. yo Tom,

          na dann wünsche ich dir viel erfolg mit deiner zeitung, vielleicht kommt ihr ja ganz gross raus. ;-)

          Ilja

  3. hi,

    Die Tabellenbezeichnung und Spaltenname sind korrekt, ebenfalls die Spaltenattribute (Varchar(6)) - dennoch meldet SQL einen Fehler - warum?

    Von "einem Fehler" zu reden, diesen aber nicht zu nennen - sieht so ein nicht bestandener IQ-Test aus? (Sofern man dabei von "nicht bestanden" reden kann.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }