sql >> データベース >  >> RDS >> SQLite

SQLiteで指定された範囲内でランダムな数値を生成する方法

    SQLiteでは、random()を使用できます 疑似乱数を生成する関数。

    これはすばらしいですが、返される値は-9223372036854775808から+9223372036854775807の間です。

    0〜10の乱数が必要な場合はどうなりますか?または、1と100と言いますか?

    幸い、random()を組み合わせることでこれを行うことができます abs()を使用 およびモジュロ演算子。

    0から10までの乱数

    次のコードを使用して、0から10までの疑似乱数を生成できます。

    SELECT abs(random() % 10);

    複数のランダムな値を選択する例を次に示します。

    SELECT 
      abs(random() % 10) AS R1,
      abs(random() % 10) AS R2,
      abs(random() % 10) AS R3;

    結果:

    R1          R2          R3        
    ----------  ----------  ----------
    2           8           5         

    範囲を広げる

    もちろん、値を任意の値に変更できます(random()内にあると仮定します 可能な値の範囲)。

    ここでも、範囲が0〜100に増加しています。

    SELECT 
      abs(random() % 100) AS R1,
      abs(random() % 100) AS R2,
      abs(random() % 100) AS R3;

    結果:

    R1          R2          R3        
    ----------  ----------  ----------
    76          60          85        

    1から10までのランダムな数字

    考えられる結果にゼロを含めたくない場合は、次の方法を使用できます。

    次のコードは、1から10までの疑似乱数を生成します。

    SELECT abs(random()) % (10 - 1) + 1;

    複数のランダムな値を選択する例を次に示します。

    SELECT 
      abs(random()) % (10 - 1) + 1 AS R1,
      abs(random()) % (10 - 1) + 1 AS R2,
      abs(random()) % (10 - 1) + 1 AS R3;

    結果:

    R1          R2          R3        
    ----------  ----------  ----------
    2           1           8         

    1. ASP.NetでのSQLインジェクションの防止

    2. ResultSet#getDate()セマンティクス

    3. SelectでID列名を指定せずにID列の値を取得する方法-SQLServer/T-SQLチュートリアルパート46

    4. ScaleGridがマネージドデータベースホスティングのGoogleCloudPlatform(GCP)サポートを開始