我需要在TSQL中创建一个随机数字字符串
我想过HASH
+ CONVERT
但是转换是在样式上工作的 - 所以我不知道如果结果和表达式的数据类型都是char(100),我怎么能这样做呢?
有什么建议吗?
答案 0 :(得分:1)
将@Length设置为您需要的内容。根据需要添加更多sys.objects副本。
DECLARE @Length INT
SET @Length = 10000
DECLARE @RandomDigits VARCHAR(MAX)
SET @RandomDigits = ''
SELECT TOP (@Length) @RandomDigits = @RandomDigits + RIGHT(CHECKSUM(NEWID()), 1)
FROM sys.objects a, sys.objects b, sys.objects c
SELECT @RandomDigits
答案 1 :(得分:0)
要获取100个随机数字的字符串,请将CHECKSUM
的输出连接到NEWID
函数:
select substring(list, 1, 100)
from (
select c as [text()]
from (
select cast(abs(checksum(newid())) as varchar(max)) as c
from sys.objects
) x
for xml path('')
) x(list)
答案 2 :(得分:0)
一种方法是使用递归CTE:
with cte as (
select cast(right(checksum(newid()), 1) as varchar(8000)) as val, 1 as len
union all
select val + right(checksum(newid()), 1), len + 1
from cte
where len < 100
)
select *
from cte
where len = 100;
答案 3 :(得分:0)
如果位数小于或等于10,您只需复制下面的代码
即可 DECLARE @digitsCount INT = 5;
SELECT RIGHT(CHECKSUM(NEWID()), @digitsCount)