Comment mettre à jour un champ dans une table avec des chaînes sélectionnées de manière aléatoire dans une liste connue?

StackOverflow https://stackoverflow.com/questions/449337

  •  19-08-2019
  •  | 
  •  

Question

J'ai une table nommée "bâtiments". qui contient un champ varchar (50) nommé "use". La table contient déjà plusieurs milliers d'enregistrements, mais l'option "utiliser" les valeurs sont toutes nulles. Je souhaite mettre à jour ces tables avec des valeurs choisies au hasard dans une liste de chaînes (par exemple, un entrepôt, un bureau, un marché, une boutique, un atelier) . J'aimerais également laisser certaines de ces valeurs null pour émuler l'utilisation du monde réel.

Comment mettre à jour un champ dans une table avec des chaînes sélectionnées aléatoirement dans une liste connue?

Était-ce utile?

La solution

Cela pourrait fonctionner pour vous:

BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;

Autres conseils

Ce n’est pas aléatoire, mais c’est un moyen simple et agréable de le faire, à condition que vous disposiez d’une distribution uniformément uniforme d’ID:

UPDATE Buildings SET Use = 'warehouse' WHERE ID % 6 = 0
UPDATE Buildings SET Use = 'office'    WHERE ID % 6 = 1
UPDATE Buildings SET Use = 'market'    WHERE ID % 6 = 2
UPDATE Buildings SET Use = 'retail'    WHERE ID % 6 = 3
UPDATE Buildings SET Use = 'workshop'  WHERE ID % 6 = 4
UPDATE Buildings SET Use = NULL        WHERE ID % 6 = 5

Cela va presque certainement être plus facile et plus rapide qu'un "aléatoire". approche. Là encore, il se peut que ce ne soit pas assez aléatoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top