2017-07-05 17 views
5

データベーステーブルの列に253行の 'M'と 'F'をランダムに列に配置したいのですが、これは可能ですか?SQLデータベースの列にランダムな文字を挿入するにはどうすればよいですか?

それはのように見えるかもしれないものの例:

Gender: 
M 
M 
F 
M 
F 
F 
M 
F 
M 
+0

_RDBMS_は、あなたがターゲットとしている[ここにリンクの説明を入力しますか]? –

+0

Microsoft SQL Server Management Studio – GeorgeB

答えて

3

MS SQLの場合、あなたは次のようにNEWIDCHECKSUM機能を使用することができます。

UPDATE Users 
    SET Gender = (CASE WHEN ABS(CHECKSUM(NEWID()) % 2) = 1 THEN 'M' ELSE 'F' END) 
  • NEWID()が生成されますGUID

  • ランダム
  • CHECKSUM()はそのGUIのハッシュを生成しますD

  • ABS()は、それが1または0


WARNING作ります!一部の人々はRAND機能を使用するように提案していますが、この特定のケースにはを使用しないでください。このようなクエリ:

UPDATE Users SET Gender = CASE WHEN (RAND() > 0.5) THEN 'M' ELSE 'F' END 

は..あなたが潜在的にあなたがイドのようないくつかの値でRAND機能をすべての値MのいずれかまたはF

のいずれかをシードすることができましたが、値の分布ではないだろうということなります非常に良い:最初の30-40%のすべてのM、30-40%のすべてのF、そして再びM。

+0

ありがとう、完璧に働いて、よく説明されています:) – GeorgeB

0

これを試して、 "M"をより支配的にしたい場合は、 "0.5"を減らして選ぶ機会を増やすことができます。

SELECT CASE WHEN (RAND() > 0.5) THEN 'M' ELSE 'F' END 
+0

RAND()を使用してテーブルを更新する場合、その値は常に同じになります。あなたはMまたはFの全列を持っています –

+0

このアップデートを検討してください:UPDATEユーザーSET Gender =ケース(RAND()> 0.5)THEN 'M' ELSE 'F END –

+0

それは更新に依存すると思います。これはループのために働きます。 –

関連する問題