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))