SQL 服务器:生成 27 个字符长的随机数字字符串
SQL Server : generate random numeric string 27 characters long
我需要在我的数据库中插入随机数据进行测试,并且需要生成一个长度为 27 个字符的数字字符串(可以以 0 开头)。
我一直在研究 NEWID()
但它也包含字母,与 NEWSEQUENTIALID()
相同。
到目前为止,我的方法是做一个 while 循环,随机生成每个数字并将其连接起来,但这似乎是一个非常慢的方法。
我正在使用 MSSQL 2014。
可能的解决方案,基于此 approach(使用 CHECKSUM()
和 NEWID()
):
CREATE TABLE TestTable(RandomNumber varchar(27))
DECLARE @length int = 27
;WITH rCTE AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM rCTE
WHERE n < @length
)
INSERT INTO TestTable(RandomNumber)
VALUES ((SELECT ABS(CHECKSUM(NEWID())) % 10 FROM rCTE FOR XML PATH('')))
-- For SQL Server 2017+
-- VALUES ((SELECT STRING_AGG(ABS(CHECKSUM(NEWID())) % 10, '') FROM rCTE))
我需要在我的数据库中插入随机数据进行测试,并且需要生成一个长度为 27 个字符的数字字符串(可以以 0 开头)。
我一直在研究 NEWID()
但它也包含字母,与 NEWSEQUENTIALID()
相同。
到目前为止,我的方法是做一个 while 循环,随机生成每个数字并将其连接起来,但这似乎是一个非常慢的方法。
我正在使用 MSSQL 2014。
可能的解决方案,基于此 approach(使用 CHECKSUM()
和 NEWID()
):
CREATE TABLE TestTable(RandomNumber varchar(27))
DECLARE @length int = 27
;WITH rCTE AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1
FROM rCTE
WHERE n < @length
)
INSERT INTO TestTable(RandomNumber)
VALUES ((SELECT ABS(CHECKSUM(NEWID())) % 10 FROM rCTE FOR XML PATH('')))
-- For SQL Server 2017+
-- VALUES ((SELECT STRING_AGG(ABS(CHECKSUM(NEWID())) % 10, '') FROM rCTE))