Announcement

Collapse
No announcement yet.

SQL Befel um wortalt00XX auf wortneu-wortalt-00XX zu ändern?

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

  • SQL Befel um wortalt00XX auf wortneu-wortalt-00XX zu ändern?

    Hallo.

    Da ich dem SQL nicht ganz zu mächtig bin, würde ich euch mal gerne fragen. Wäre toll wenn mir jemand weiterhelfen kann.

    Ich möchte mehrere DB-Felder einer Spalte editieren bzw. ändern.
    Momentan steht in diesen Felder eine Wort mit einer fortlaufenden Nummerierung, also zB "wortalt00XX". Ich müsste diese Werte bzw. Worte in den Feldern wie folgt umeditieren "wortneu-wortalt-00XX". Sprich es soll ein neues Wort vorangestellt werden, das alte Wort soll beibehalten werden, und alles soll jeweils durch einen Bindestrich getrennt werden. Die alte Nummerierung soll beibehalten werden. Also zB aus wurst0001 soll hallo-wurst-0001 werden, aus wurst0002, soll hallo-wurst-0002 werden, usw. usw.

    Hat hier jemand einen ausgefuchsten SQL Befehl bzw. mehrere mit dem ich das anstellen kann?

    Danke Euch.

    Grüße
    Florian

  • #2
    http://dev.mysql.com/doc/refman/5.1/en/regexp.html
    Christian

    Comment


    • #3
      Hallo,

      @Christian Marquardt:
      die REGEXP-Funktion von MySQL sieht zwar auf den ersten Blick vielversprechend aus, sie ist aber eine reine Suchfunktion und liefert 0/1 je nachdem ob Übereinstimmung erzielt wurde. Für die Stringzerlegung ist sie jedoch nicht geeignet.

      @wflorian:
      Wenn der numerische Teil eine feste Länge hat, dann könntest du die Werte relativ einfach mit SUBSTRING() zerlegen und dann neu zusammenbauen.
      [highlight=sql]
      update table tabelle set
      feld = CONCAT(
      'neuesWort',
      '-',
      SUBSTR(feld, 1, LENGTH(feld) - anzahlNumerisch),
      '-',
      SUBSTR(feld, -anzahlNumerisch))
      where deineBedingung
      [/highlight]

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        sorry für die späte antwort.

        erstmal danke euch beiden für die antwort.

        Danke vorallem Dir Falk. Ich werde Deinen Vorschlag mal testen und schauen ob ich das mit meinen rudimentären SQL Kenntnisse hinbekomme

        Ich melde mich.

        Grüße
        Florian

        Comment


        • #5
          Originally posted by Falk Prüfer View Post
          Wenn der numerische Teil eine feste Länge hat, dann könntest du die Werte relativ einfach mit SUBSTRING() zerlegen und dann neu zusammenbauen.
          [highlight=sql]
          update table tabelle set
          feld = CONCAT(
          'neuesWort',
          '-',
          SUBSTR(feld, 1, LENGTH(feld) - anzahlNumerisch),
          '-',
          SUBSTR(feld, -anzahlNumerisch))
          where deineBedingung
          [/highlight]

          Gruß Falk
          So ich bin jetzt mal zum testen gekommen. Versuche jetzt seit zwei Stunden den Code umzusetzen und bin gescheitert. Mein Code:

          Code:
          UPDATE TABLE my_images SET
          feld = CONCAT(
          'bild',
          '-',
          SUBSTR(image_name, 1, LENGTH(image_name) - 4),
          '-',
          SUBSTR(image_name, -4))
          WHERE WHERE image_name IS NOT NULL
          Ich erhalte dann folgenden Fehler:
          Code:
          MySQL meldet: Dokumentation
          #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 'TABLE my_images SET
          feld = CONCAT(
          'bild',
          '-',
          SUBSTR(image_name' at line 1
          Was habe ich hier falsch gemacht? Der nummerische Teil hat immer eine fest Länge, in der Form 0001 zB. Sprich 4 Ziffern.

          Ich hab auch gemerkt, "wortalt00XX" nicht zu "wortneu-wortalt-00XX" umgeformt werden muss, sonder zu "wortneu1-wortalt-wortneu2-00XX". Der Code müsste also wohl noch ein wenig erweitert werden.

          Primär geht es mir aber erstmal darum, dass ich den Code so oder so zum laufen bzw. umändern bekomme.

          Kann mir jemand bei den beiden Probleme nochmal weiterhelfen? Wäre wirklich super. Ich blick da nicht so wirklich durch. Ich hoffe ich kriege das mit Eurer Hilfe hin.

          Freue mich auf Antworten.

          Grüße
          Florian

          Comment


          • #6
            1. Heißt das Feld, in dem wie Umwandlung stattfinden soll wirklich "feld"? Ich denke, das heißt eher "image_name", oder?
            2. Du benutzt zwei mal "WHERE".

            Ansonsten sollte das eigentlich (...) stimmen - jedoch kann ich es gerade selbst nicht nachvollziehen.

            Comment


            • #7
              Originally posted by Thomas Wiesseckel View Post
              1. Heißt das Feld, in dem wie Umwandlung stattfinden soll wirklich "feld"? Ich denke, das heißt eher "image_name", oder?
              2. Du benutzt zwei mal "WEHRE".

              Ansonsten sollte das eigentlich (...) stimmen - jedoch kann ich es gerade selbst nicht nachvollziehen.
              Hallo Thomas,

              wahnsinn, was für schusslige Fehler ich da rein gemacht habe. War ich wohl nicht ganz ausgeschlafen.

              Habe jetzt alles korrigiert:

              Code:
              UPDATE TABLE my_images SET image_name = CONCAT(  'bild',  '-', SUBSTR( image_name, 1, LENGTH( image_name ) -4 ) ,  '-', SUBSTR( image_name, -4 ) )  WHERE image_name IS NOT NULL
              Jetzt erhalte ich aber folgenden Fehler:

              Code:
              #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 'TABLE my_images SET image_name = CONCAT(  'bild',  '-', SUBSTR( image' at line 1
              Jemand eine Idee?

              Comment


              • #8
                Macht nichts - ich laufe auch erst mit der zweiten oder dritten Tasse Kaffee warm

                Wie gesagt: Ich kann es gerade nicht testen, aber mir fällt gerade auf, dass ein MySQL-Update üblicherweise kein "TABLE" kennt.

                Versuche also zwei Dinge:

                1. Nutze bitte für SQL-Statements den highlight=SQL - BB-Code
                2.
                [highlight=SQL]UPDATE my_images
                SET image_name = (...)
                WHERE image_name IS NOT NULL[/highlight]

                Comment


                • #9
                  super! es hat funktioniert. hier mal der eingesetzte code:

                  Code:
                  UPDATE sexygifs_images
                  SET image_name = CONCAT(  'bild',  '-', SUBSTR( image_name, 1, LENGTH( image_name ) -4 ) ,  '-', SUBSTR( image_name, -4 ) ) 
                  WHERE image_name IS NOT NULL
                  Wie genau lautet der BBCode TAG für das SQL Highlight?

                  Also wie gesagt der Code funktioniert. Der Code müsste aber so modifiziert werden, dass "wortalt00XX" nicht zu "wortneu-wortalt-00XX" umgeformt wird, sonder zu "wortneu1-wortalt-wortneu2-00XX". Der Code müsste also wohl noch ein wenig erweitert werden.

                  Kann mir da jemand noch bitte weiterhelfen?

                  Danke euch für die großartige Hilfe bisher.

                  Florian

                  Comment


                  • #10
                    highlight=SQL
                    UPDATE (...)
                    SET (...)
                    WHERE (...)
                    /highlight

                    Die erste und die letzte Zeile jeweils mit eckigen Klammern verzieren - und schon wird sein SQL richtig angezeigt:

                    [highlight=SQL]
                    UPDATE (...)
                    SET (...)
                    WHERE (...)
                    [/highlight]


                    Zu deiner erweiterten Frage: Du hast alles Handwerkszeug, dass Du dafür benötigst. Du kennst nun CONCAT und Du weißt, wie Du mit SUBSTR Teile des Inhalts herausziehen kannst. Jetzt musst Du nur noch dein CONCAT um den Teil erweitern, den Du schon einmal verwendet hast, um das neue Wort an das alte anzuhängen - schon ist deine Aufgabe gelöst

                    Comment


                    • #11
                      Originally posted by Thomas Wiesseckel View Post
                      highlight=SQL
                      UPDATE (...)
                      SET (...)
                      WHERE (...)
                      /highlight

                      Die erste und die letzte Zeile jeweils mit eckigen Klammern verzieren - und schon wird sein SQL richtig angezeigt:

                      [highlight=SQL]
                      UPDATE (...)
                      SET (...)
                      WHERE (...)
                      [/highlight]


                      Zu deiner erweiterten Frage: Du hast alles Handwerkszeug, dass Du dafür benötigst. Du kennst nun CONCAT und Du weißt, wie Du mit SUBSTR Teile des Inhalts herausziehen kannst. Jetzt musst Du nur noch dein CONCAT um den Teil erweitern, den Du schon einmal verwendet hast, um das neue Wort an das alte anzuhängen - schon ist deine Aufgabe gelöst
                      Recht hast Du. Konnte es jetzt ganz einfach selbst lösen. Danke Dir für Deine tolle Hilfe!

                      Grüße
                      Florian

                      Comment


                      • #12
                        Originally posted by Thomas Wiesseckel View Post
                        highlight=SQL
                        UPDATE (...)
                        SET (...)
                        WHERE (...)
                        /highlight

                        Die erste und die letzte Zeile jeweils mit eckigen Klammern verzieren - und schon wird sein SQL richtig angezeigt:
                        ... und wenn man dann noch den [noparse][/noparse] BB-Code verwendet, dann kann man sogar BB-Codes veranschaulichen:

                        [highlight=sql]
                        UPDATE (...)
                        SET (...)
                        WHERE (...)
                        [/highlight]



                        Gruß Falk
                        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                        Comment


                        • #13
                          Gut zu wissen.

                          Comment


                          • #14
                            ich muss jetzt mal nachhaken:

                            ich habe den Eintrag ( 02/00/06) zB.

                            In der Abfrage lautet der msql befehl
                            PHP Code:
                            .....substrac_alle_zellen.belegung_vermerk4) AS notgem,..... 
                            in meinem code habe ich die Möglichkeit die drei Parameter zu ändern. Eigentlich nur den mittleren.

                            jetzt möchte ich die Angaben einzeln ändern(02/00/06)

                            PHP Code:
                            $sql=" UPDATE ac_alle_belegung SET ????? Where raumID = '...' 
                            kann mir bitte jemand den entscheidenden Hinweis liefern

                            Comment


                            • #15
                              erledigt:
                              PHP Code:
                              UPDATE ac_alle_zellen 
                              SET  
                              `belegung_vermerk` = 
                              CONCATSUBSTR(`belegung_vermerk`, 12),'/',   '00''/',  SUBSTR(`belegung_vermerk`, 72))WHERE `raumID`='563' 
                              hatte nen Buchstabendreher.....

                              Danke
                              Zuletzt editiert von A.DA; 01.06.2012, 15:00.

                              Comment

                              Working...
                              X