Wie aktualisiere ich ein Feld in der Tabelle mit Strings zufällig aus einer bekannten Liste ausgewählt?

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

  •  19-08-2019
  •  | 
  •  

Frage

Ich habe eine Tabelle mit dem Namen „Gebäude“, die eine varchar (50) Feld „Verwendung“ enthält. Die Tabelle hat bereits mehrere tausend Datensätze, aber die „Verwendung“ Werte sind alle null. Ich möchte diese zum Aktualisieren dieser Tabelle mit zufällig ausgewählten Werte aus einer Liste von Strings (z. B. Lager, Büro, Markt, Handel, Werkstatt) . Ich möchte auch einige dieser null verlassen realen Welt Nutzung zu emulieren.

Wie kann ich ein Feld in einer Tabelle aktualisieren mit Strings zufällig aus einer bekannten Liste ausgewählt?

War es hilfreich?

Lösung

Dies könnte für Sie arbeiten:

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

Andere Tipps

Es ist nicht zufällig, aber das ist eine schöne und einfache Möglichkeit, es zu tun, sofern Sie eine realtively gleichmäßige Verteilung von IDs haben:

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

Das wird mit ziemlicher Sicherheit einfacher und schneller sein als ein „random“ -Ansatz. Dann wieder, ist es vielleicht nicht zufällig genug sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top