Partage
  • Partager sur Facebook
  • Partager sur Twitter

Remplacer une colonne par des valeurs aléatoires

    23 septembre 2021 à 18:15:41

    Bonjour/Bonsoir

    Voila ma problématique (déjà, je ne sais pas trop si c'est faisable)

    dans ma table, j'ai une colonne qui contient une chaine alphanumérique de 10 caractères. Mon soucis, c'est que cette chaine n'est pas random (j'ai mis un truc à l'arrache genre A123456789 pour tous mes enregistrements ) et j'aimerais pouvoir faire une requête SQL afin de remplacer cette chaine alphanumérique non random par une chaine alphanumérique de 10 caractères aléatoires sur toutes les occurrences de ma table.

    Mais je n'ai aucune idée de la faisabilité d'une telle chose et si c'est compliqué :(

    Du coup je me tourne vers vous pour avoir un peu d'aide.

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2021 à 8:54:49

      Bonjour,

      Il "suffit" de faire une procédure avec un curseur qui calcule l'élément random et fait l'UPDATE de chaque ligne.

      Avec quel SGBD travailles-tu ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        24 septembre 2021 à 12:08:15

        MySQL n'a pas de fonction spécifique pour générer une chaîne aléatoire de 10 caractères.

        Avec MySQL ce pourrait être :

        • un nombre entier à 10 chiffres avec la fonction RAND()
        • une chaîne alphanumérique de 128 bits avec la fonction UUID()
        • un nombre entier sur 64 bits avec la fonction UUID_SHORT()

        Sinon il faudrait passer par un langage de programmation intermédiaire (PHP par exemple).

        Quel serait le rôle de cette colonne ? Et pourquoi 10 caractères ?

        -
        Edité par Benzouye 24 septembre 2021 à 12:08:28

        • Partager sur Facebook
        • Partager sur Twitter
        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
          26 septembre 2021 à 23:01:57

          Très franchement, j'attends la réponse à la question de Benzouye parce que je ne vois pas l'intérêt de formater de cette manière cette colonne. Si c'est pour identifier, dans la majorité des cas, l'id que tu dois avoir en première colonne et qui joue le rôle de PK suffit. Là, tu risques de faire doublons pour rien.

          Et si cette colonne est vraiment nécessaire, il faut que le contenu soit logique quitte à le découper en plusieurs colonnes.

          Par exemple, pour une BDD de la sécurité sociale en France, il n faut pas stocker le numéro sur une colonne, mais sur 7 (en comptant la clé) :

          SEXE | ANNÉE | MOIS | DÉPARTEMENT | le numéro à 3 chiffres qui représentent je ne sais plus quoi | les 3 autres chiffres | la clé.

          Ainsi, si on veut chercher toutes personnes nées entre 2000 compris et 2010 compris, on check sur la colonne ANNÉE.

          Et enfin, sur le cours de MySQL, un BIGINT vaut 8 octets (il permet de stocker un entier à 10 chiffres), un CHAR(10) qui permet de stocker les 10 caractères fait 10 octets. Tu augmentes pour chaque ligne de 25% la quantité à stocker. Et les CPU sont énormément plus rapides en calcul sur les entiers que les chaînes de caractères.

          • Partager sur Facebook
          • Partager sur Twitter

          Remplacer une colonne par des valeurs aléatoires

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown