【问题标题】:RAND() not consistently generating the right length valueRAND() 不能始终如一地生成正确的长度值
【发布时间】:2020-12-16 13:22:55
【问题描述】:

我已经准备好以下代码,其想法是每次调用存储过程时都需要生成一个 30 个字符的随机数,奇怪的是在大多数情况下它按预期工作,但在其他看似随机的情况下在这种情况下,它只会生成一个 28 个字符的随机数。

'\\xxx-servername\folder\'+
    CAST(CAST((RAND()*1000000000000000000000000000000) as decimal(30))as varchar(30)) +
    RAM.AccountNumber+HRMRN.PrefixMedicalRecordNumber+'ESTIMATE       N00001'+
        REPLACE(CONVERT(VARCHAR(12),ISNULL(HRM.Birthdate,HRM.BirthdateComputed),111),'/','')+HRM.Sex+
            REPLACE(CONVERT(VARCHAR(12),GetDate(),111),'/','')+LEFT(REPLACE(CONVERT(VARCHAR(12),GetDate(),108),':',''),4)+'.PDF' as [CPFileName]

希望也许有人可以提供一些建议,因为我不知所措......

【问题讨论】:

  • 您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tagWhy should I tag my DBMS

标签: sql random


【解决方案1】:

我怀疑您的系统会自动删除前导零。您可以自己重新插入这些零,也可以使用以下方式构造您的数字:

number <- ""
number.append(randomDigit(1,9))
repeat 29 times
  number.append(randomDigit(0,9))
end repeat

这保证您不会得到前导零。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多