Sql Serverは、指定された数字に基づいて連続数字を生成します。


需要はsqlserverを使用して指定された数字と表から一連の数字を生成し、oracleのROWNUMのような機能を使用して、具体的には下記の通り実現します。
一、OracleはROWNUMを使用して実現する方式である。

SELECT 
 ROWNUM number_list
FROM   
WHERE ROWNUM <= 10;

二、Sql Serverは上記機能を実現する3つの方法
1.マスターを使う…スパートを使うvalues方式

SELECT
 number 
FROM
 MASTER..spt_values 
WHERE
 TYPE = 'P' 
 AND number > 0 
 AND number <= 10;

spt_valuesはマスターデータベースのシステムテーブルで、numberの数値範囲は0~2047です。
2.String_を使用するSplit関数実現
select row_number()over(order by(select 1)from String_Split(space(6)')
String_SplitはSQLServer 2016の新しい関数であり、この方法は2016および以降のバージョンにのみ有効です。
(私のデータベースバージョンは2008です。この方式は検証されていません。)
3.top+ROW_を使うNUMBER()OVER方式実現

SELECT TOP
 10 ROW_NUMBER () OVER (
ORDER BY
 (SELECT 1)) number_list 
FROM
(SELECT TOP 10 * FROM   ) t;

第一の方法はデータベースバージョンに対して要求がないが、値を取る範囲は0~2047に制限がある。
第二の方式はデータベースバージョンに要求があり、2016及びそれ以上である。
第三の方法はデータベースのバージョンに対して要求がないので、表と表のデータ量が生成する数字より大きいなら大丈夫です。
補足知識:データベース生成テストデータ(SQL実現)
需要
プロジェクトではたまにデータを作ってテストすることがありますが、よくあるデータの特徴から、データをテーブルテーブルテーブルテーブルテーブルテーブルにセットします。Xは4つのフィールドを含み、各フィールドの要求は以下の通りであり、5000のデータを作成する必要がある。

以上の需要は非常に簡単に見えるが、代表的で複雑な需要も小さな需要の配置によって成り立っている。
機能準備
乱数
乱数を生成するコア機能は、SQL Serverの下にRAND()のシステム関数があり、0から1の間の小数を生成することができます。これを利用して、固定区間[Min,Max]の小数点数を生成できます。Min+(Max-Min)*RAND()、またCHECKSUM(NEWID()も、一連の比較的大きな整数(9桁または10桁が多く)を生成し、ABSを再結合します。生成した乱数の範囲をよく制御することができます。
区間乱数関数
SQLを便利に書くために、あらかじめカスタム関数を作成して、区間乱数を生成します。

CREATE VIEW vwRand
AS
SELECT RAND() AS RandValue
GO

CREATE FUNCTION dbo.Random_Range
(
  @Min DECIMAL(22,5)
  ,@Max DECIMAL(22,5)
)RETURNS DECIMAL(22,5)
-- return value between @Min and @Max
BEGIN
  DECLARE @Result DECIMAL(22,5);
  SELECT @Result = @Min + (@Max - @Min) * RandValue FROM vwRand;
  RETURN @Result
END
GO
ここでまず一つのビューを作成し、関数内で参照すると、SQL Serverは関数体に直接RAND関数を参照することをサポートしていないため、Invalid use of a side-effinecg operator'rand'within a functionをエラーとします。
リストの選択
少数のエニュメレート・数値から選択されるならば、CHOOSE関数を使用することができる。
大量の候補から選択すると、増加列を含むデータベーステーブルにデータを導入して、量子クエリで選択できます。
製造数SQL

SELECT TOP 5000
  ABS(CHECKSUM(NEWID())) % 100 + 1 AS Col_A
  ,dbo.Random_Range(5000, 10000) AS Col_B
  ,ISNULL(CHOOSE(ABS(CHECKSUM(NEWID())) % 3 + 1, 'S', 'M', 'L', 'XL', 'XXL'), 'M') AS Col_C
  ,DATEADD(DAY, dbo.Random_Range(0, DATEDIFF(DAY, '20000101', '20201231')), '20000101') AS Col_D
FROM sys.all_columns
説明
実際の需要はフィールドが非常に多いかもしれませんが、基本的には上記の書き方でパラメータを変更すればいいです。
SQLの機能は結局限られています。基本的には固定リストからランダムに選択するだけでなく、ランダムな数値データを生成するシーンに適しています。
都市名、メールボックス、人名、携帯番号、住所などのデータを大量に生成するには、もっと業務領域の特性に合うデータを作るには、純粋なSQLを使うのはちょっと大変です。次のページでは、pythonのfakerライブラリでテストデータを生成する方法を紹介します。
以上のSql Serverは連続数字を生成して、指定された数字に基づいて操作します。つまり、小編集は皆さんに全部の内容を共有しています。