Como atualizo os campos na tabela com strings selecionados aleatoriamente em uma lista conhecida?

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

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top