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

2つの数値の間の数値の範囲を生成するにはどうすればよいですか?

    VALUESで永続化されていない値を選択します キーワード。次に、JOINを使用します sたくさんの組み合わせを生成します(拡張して数十万行以上を作成できます)。

    短くて速いバージョン(読みにくい):

    WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
    FROM x ones, x tens, x hundreds, x thousands
    ORDER BY 1
    

    デモ

    より詳細なバージョン:

    SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
    FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
         (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
    ORDER BY 1
    

    デモ

    どちらのバージョンもWHEREで簡単に拡張できます 句、数値の出力をユーザー指定の範囲に制限します。再利用したい場合は、テーブル値関数を定義できます。



    1. SQL Server(SSMS)のデータベースの互換性レベルを確認/変更する

    2. インストールされているSQLServerインスタンスとそのバージョンを確認するにはどうすればよいですか?

    3. MySQLで文字列の一部を置き換える方法

    4. MariaDBJSON関数