创建随机数字字符串T-SQL

时间:2014-04-26 11:21:36

标签: sql-server string tsql random hash

我需要在TSQL中创建一个随机数字字符串 我想过HASH + CONVERT 但是转换是在样式上工作的 - 所以我不知道如果结果和表达式的数据类型都是char(100),我怎么能这样做呢? 有什么建议吗?

4 个答案:

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