¿Cómo actualizo un campo en la tabla con cadenas seleccionadas al azar de una lista conocida?
-
19-08-2019 - |
Pregunta
Tengo una tabla llamada "edificios" que contiene un campo varchar (50) llamado "use". La tabla ya tiene varios miles de registros, sin embargo, el "uso" Los valores son todos nulos. Me gustaría actualizar esta tabla con valores elegidos al azar de una lista de cadenas (por ejemplo, almacén, oficina, mercado, venta minorista, taller) . También me gustaría dejar algunos de estos nulos para emular el uso del mundo real.
¿Cómo puedo actualizar un campo en una tabla con cadenas seleccionadas al azar de una lista conocida?
Solución
Esto podría funcionar para usted:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
Otros consejos
No es aleatorio, pero esta es una manera agradable y fácil de hacerlo, siempre que tenga una distribución realmente uniforme de 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
Es casi seguro que será más fácil y rápido que un "aleatorio" enfoque. Por otra parte, puede que no sea lo suficientemente aleatorio.