【问题标题】:Create random string of digits T-SQL创建随机数字字符串 T-SQL
【发布时间】:2014-04-26 11:21:35
【问题描述】:

我需要在 TSQL 中创建一串随机数字 我想过HASH + CONVERT 但是转换适用于样式-例如,如果结果和表达式的数据类型都是 char(100),我不会展示我该怎么做 有什么建议吗?

【问题讨论】:

    标签: sql-server string tsql random hash


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      要获得 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)
      

      【讨论】:

        【解决方案3】:

        一种方法是使用递归 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;
        

        【讨论】:

          【解决方案4】:

          如果位数小于或等于10,你可以复制下面的代码

            DECLARE @digitsCount INT = 5;
            SELECT RIGHT(CHECKSUM(NEWID()), @digitsCount)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-22
            • 1970-01-01
            • 2017-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-09-27
            相关资源
            最近更新 更多