¿Cómo actualizo un campo en la tabla con cadenas seleccionadas al azar de una lista conocida?

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

  •  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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top