MSSQL随机生成数据

在实际开发中,我们经常需要使用随机生成的数据来进行测试或者模拟真实数据场景。而在MSSQL数据库中,可以通过一些函数来实现随机生成数据的需求。本文将从整型、字符型、日期型三个方面介绍在MSSQL中如何随机生成数据。
整型数据
RAND函数
RAND()函数返回一个0到1之间的随机浮点数。我们可以通过RAND()函数配合一些数学函数来生成指定范围的整型随机数。例如,生成1到100之间的整型随机数的SQL语句如下:
SELECT CAST(RAND() * 100 AS INT) + 1 AS RandomNumber
执行以上SQL语句将返回一个1到100之间的随机整数。每次执行将得到一个不同的随机数。
NEWID函数
NEWID()函数返回一个唯一标识符,可以通过一些函数将其转换成整型随机数。例如,生成1到100之间的整型随机数的SQL语句如下:
SELECT ABS(CHECKSUM(NEWID()) % 100) + 1 AS RandomNumber
执行以上SQL语句同样可以得到一个1到100之间的随机整数。
字符型数据
CHARINDEX函数
CHARINDEX()函数返回一个字符串在另一个字符串中首次出现的位置。我们可以通过结合CHARINDEX()函数和SUBSTRING()函数来实现在指定字符集中随机生成字符。例如,生成5位随机字母的SQL语句如下:
SELECT
CHAR(65 + CAST(RAND() * 26 AS INT)) +
CHAR(65 + CAST(RAND() * 26 AS INT)) +
CHAR(65 + CAST(RAND() * 26 AS INT)) +
CHAR(65 + CAST(RAND() * 26 AS INT)) +
CHAR(65 + CAST(RAND() * 26 AS INT)) AS RandomLetters
执行以上SQL语句将返回一个5位长度的随机字母。
LEFT函数
LEFT()函数返回一个字符串的左边指定长度的子字符串。我们可以结合LEFT()函数和CHARINDEX()函数来实现在指定字符集中随机生成字符。例如,生成5位随机字母的SQL语句如下:
SELECT
LEFT('ABCDEFGHIJKLMNOPQRSTUVWXYZ', CAST(RAND() * 26 + 1 AS INT)) +
LEFT('ABCDEFGHIJKLMNOPQRSTUVWXYZ', CAST(RAND() * 26 + 1 AS INT)) +
LEFT('ABCDEFGHIJKLMNOPQRSTUVWXYZ', CAST(RAND() * 26 + 1 AS INT)) +
LEFT('ABCDEFGHIJKLMNOPQRSTUVWXYZ', CAST(RAND() * 26 + 1 AS INT)) +
LEFT('ABCDEFGHIJKLMNOPQRSTUVWXYZ', CAST(RAND() * 26 + 1 AS INT)) AS RandomLetters
执行以上SQL语句同样可以得到一个5位长度的随机字母。
日期型数据
随机日期
我们可以结合RAND()函数和DATEADD()函数来随机生成日期。例如,生成2020年1月1日至2020年12月31日之间的随机日期的SQL语句如下:
SELECT DATEADD(day, CAST(RAND() * 365 AS INT), '2020-01-01') AS RandomDate
执行以上SQL语句将返回2020年1月1日至2020年12月31日之间的随机日期。
通过以上介绍,我们可以在MSSQL中使用不同的函数来生成整型、字符型和日期型的随机数据,满足日常开发中对于随机数据需求的场景。
极客教程