SQL Server:生成27个字符长的随机数字字符串

问题描述 投票:0回答:2

我需要在数据库中插入随机数据进行测试,并且需要生成一个长度为 27 个字符的数字字符串(可以从 0 开始)。

我一直在研究

NEWID()
,但它也包含字母,与
NEWSEQUENTIALID()
相同。

到目前为止,我的方法是创建一个 while 循环,随机生成每个数字并将其连接起来,但这似乎是一种非常慢的方法。

我正在使用 MSSQL 2014。

sql-server string random numeric
2个回答
3
投票

基于此方法的可能解决方案(使用

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

0
投票

我正在使用 presto,并且我找到了这个解决方案:

SELECT LPAD(CAST(RANDOM(1000000000) AS VARCHAR), 27, '0')
© www.soinside.com 2019 - 2024. All rights reserved.