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

3から6までのランダムなint値を生成します

    便利な編集者が各ステートメントの前に「Select」を追加しましたが、このアイテムのポイントは、1つのアイテムだけでなく、リターンの各行に一意のキーを生成できることです(そのためにRand()関数を使用します)。 :tblExampleから上位100ランド()*を選択

    100行すべてに対して同じランダム値を返します。

    一方:tblexampleから上位100のABS(CHECKSUM(NEWID())%10)*を選択します

    戻り値の各行で0から9までの異なるランダム値を返します。したがって、selectを使用するとコピーと貼り付けが簡単になりますが、必要に応じてロジックをselectステートメントにコピーできます。

    これにより、0〜9の乱数が生成されます

    SELECT ABS(CHECKSUM(NEWID()) % 10)
    

    1から6

    SELECT ABS(CHECKSUM(NEWID()) % 6) + 1
    

    3から6

    SELECT ABS(CHECKSUM(NEWID()) % 4) + 3
    

    動的(Eilert Hjelmesethsコメントに基づく、バグを修正するために更新(+から-))

    SELECT ABS(CHECKSUM(NEWID()) % (@max - @min - 1)) + @min
    

    コメントに基づいて更新:

    • NEWID ランダムな文字列を生成します(返される行ごとに)
    • CHECKSUM 文字列の値を取り、数値を作成します
    • モジュラス(% )その数で割り、余りを返します(つまり、最大値は使用する数より1少ない)
    • ABS ネガティブな結果をポジティブに変更します
    • 次に、結果に1を追加して、0の結果を削除します(サイコロの目をシミュレートするため)


    1. MySQLで週ごとにグループ化する方法は?

    2. 新しいSQLレコードIDを取得します

    3. PLPDF_TOOLKIT PL / SQLパッケージを使用して、Oracleで複数のPDFファイルを1つのPDFにマージ/結合

    4. .NET用のMySQLコネクタへの参照を追加するにはどうすればよいですか?