gpt4 book ai didi

sql-server - 在 SQL 中生成 8 个字符的随机字母数字字符串的最有效方法是什么?

转载 作者:行者123 更新时间:2023-12-02 11:26:58 24 4
gpt4 key购买 nike

我想在 TSQL 中生成一个唯一的 8 个字符的随机字母数字字符串,用于邮件确认链接。我们目前正在使用 用户名 但它不是很用户友好。

它只需要遵守一些规则:

  • 长度为 8 个字符
  • 独一无二
  • 高效生成
  • 最佳答案

    这里有2种解决方法

    方法一:这会生成8个随机字符,并存储在varchar@r中,为了防止所有单个字符都相同,我在RAND()中添加了一个种子。

    DECLARE @r varchar(8)

    SELECT @r = coalesce(@r, '') +CHAR(
    CASE WHEN r between 0 and 9 THEN 48
    WHEN r between 10 and 35 THEN 55
    ELSE 61 END + r)
    FROM
    master..spt_values
    CROSS JOIN
    (SELECT CAST(RAND(ABS(CHECKSUM(NEWID()))) *61 as int) r) a
    WHERE type = 'P' AND number < 8

    方法二:这个方法是使用一个tally table,每个字符永远不会出现超过一次。用于生成这些字符的行通过 newid() 上的排序随机化
    DECLARE @r varchar(8)

    SELECT @r = coalesce(@r, '') + n
    FROM (SELECT top 8
    CHAR(number) n FROM
    master..spt_values
    WHERE type = 'P' AND
    (number between ascii(0) and ascii(9)
    or number between ascii('A') and ascii('Z')
    or number between ascii('a') and ascii('z'))
    ORDER BY newid()) a

    为了确保每个 varchar(8) 的唯一性,您可以将结果存储在一个表中并与该表中的结果进行比较。你也可以让 varchar 更长,只希望最好的

    关于sql-server - 在 SQL 中生成 8 个字符的随机字母数字字符串的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934330/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com