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

MS SQL の範囲からランダムな値を取得しますか?

    DECLARE @t TABLE
    (VALUE CHAR(3))
    
    INSERT @t
    VALUES
    ('000'),('002'),('005'),('190')
    
    
    ;WITH rnCTE
    AS
    (
        SELECT -1 + ROW_NUMBER() OVER (ORDER BY TYPE, number, name) AS rn
        FROM master.dbo.spt_values
    )
    SELECT RIGHT('000' + CAST( rn AS VARCHAR(11)),3)
    FROM rnCTE
    WHERE NOT EXISTS    (   SELECT 1 FROM @t 
                            WHERE VALUE = rn
                        )
    AND rn < 1000
      

    編集

    このクエリは、システム テーブル (master.dbo.spt_values) から可能な数値の完全なリストを生成することによって機能します。 ) CTE rnCTE 内に 1000 行を超える行が含まれていることが保証されています . -1 が ROW_NUMBER に追加されます 値を 1 ではなく 0 から開始します。

    外側のクエリは、表示のために数値をゼロで埋め、ソース データになく、1000 未満の数値のみを返します。



    1. GPS座標半径の計算

    2. SQLServerでcaseステートメントを使用して複数の列を更新する

    3. cx_Oracle-DLLのロードに失敗しました:%1は有効なWin32アプリケーションではありません。 Python

    4. mysqlテーブルでインデックスを作成する列を設定すると、O(1)が確実に検索されますか?