[MySQL 4.1] Frage an Profi: Zufälligen Buchstaben an zufälliger Stelle eines Strings erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.1] Frage an Profi: Zufälligen Buchstaben an zufälliger Stelle eines Strings erstellen

    Hallo,

    ich benötigen für MySQL eine Update-Befehlsfolge, welche folgender Anforderung gerecht wird:

    Ich habe eine Tabellenspalte "e-nr" mit jeweils 3stellige Zahlenfolgen, z.B.

    019
    999
    241
    001

    Ich möchte diese nun an einer zufälligen Stelle mit einem Buchstabe (A-Z) ergänzen, so daß (am Beispiel der obigen Werte) z.B.

    Y019
    9B99
    24K1
    001H

    herauskommt.

    Kann das jemand? (... ich leider nicht :-((

    Vielen Dank im Voraus
    fendit

  • #2
    Das ist so abgefahren, daß ich neugierig wurde, ob es überhaupt geht. Folgendes ist dabei herausgekommen:
    Code:
    UPDATE tabelle 
    SET `e-nr` = CONCAT_WS(
        CHAR( FLOOR( 65 + RAND( ) *25 ) ), 
        SUBSTRING(
            `e-nr`, 
            1, 
            FLOOR( 0 + RAND(3) * CHARACTER_LENGTH(`e-nr`) )
        ), 
        SUBSTRING(
            `e-nr`, 
            FLOOR( 0 + RAND(3) * CHARACTER_LENGTH(`e-nr`) ) + 1, 
            CHARACTER_LENGTH(`e-nr`) 
        ) 
    )
    Diese Methode ist
    a) alles andere als performant, aber wirklich schnell kann man das imho nicht umsetzen und
    b) schlecht, weil RAND() ein schlechter Randomizer ist und
    c) echt schlecht, weil RAND() auch noch mit einem festen Salt aufgerufen wird.
    Das Salt muß allerdings sein, damit beide SUBSTRING() korrekt schneiden.

    Könnte man den Term FLOOR(...) so auslagern, dass man ihn an den zwei Stellen referenzieren kann, könnte man aufs Salt verzichten und alles wäre gut. Aber ich bin schon zu dösbaddlig ...

    Kommentar


    • #3
      HUT AB!

      Wenn ich ehrlich bin, habe ich auf Neugierde spekuliert....

      Vielen dank, funktioniert einwandfrei und liefert genau das, was ich gesucht habe.

      Respekt!

      fendit

      Kommentar


      • #4
        Danke. Perfekt ist es allerdings wirklich nicht, denn der Buchstabe wurde bei meinen Tests (mit deinen Zahlen) nicht an einer "zufälligen Stelle" eingefügt sondern an immer derselben (abhängig von der Zahl).

        Vielleicht hat ja noch jemand Lust, sich der Herausforderung zu stellen.

        Kommentar

        Lädt...
        X