Como atualizo os campos na tabela com strings selecionados aleatoriamente em uma lista conhecida?
-
19-08-2019 - |
Pergunta
Eu tenho uma tabela chamada "edifícios" que contém um campo Varchar (50) chamado "Use". A tabela já possui vários milhares de registros, no entanto, os valores de "uso" são todos nulos. Eu gostaria de atualizá -los esta tabela com valores escolhidos aleatoriamente de uma lista de strings (por exemplo, armazém, escritório, mercado, varejo, workshop). Eu também gostaria de deixar alguns desses nulos para imitar o uso do mundo real.
Como posso atualizar um campo em uma tabela com strings selecionados aleatoriamente em uma lista conhecida?
Solução
Isso pode funcionar para você:
BEGIN;
UPDATE Buildings SET Use = (ARRAY['warehouse', 'office', 'market', 'retail', 'workshop', NULL])[floor(random() * 6.0) + 1];
COMMIT;
Outras dicas
Não é aleatório, mas essa é uma maneira agradável e fácil de fazê -lo, desde que você tenha uma distribuição uniforme de IDs uniforme:
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
Isso quase certamente será mais fácil e rápido que uma abordagem "aleatória". Então, novamente, pode não ser aleatório o suficiente.