DECLARE @chars NCHAR(36)
SET @chars = N'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
DECLARE @result NCHAR(4)
SET @result = SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
+ SUBSTRING(@chars, CAST((RAND() * LEN(@chars)) AS INT) + 1, 1)
SELECT @result
我试试这个但是太长了我使用nodejs和posgresql
答案 0 :(得分:0)
由于您使用的是nodejs,因此可以在数据库中使用标准整数,并在向用户显示时将其转换为base36。在javascript中,数字上toString的参数是基数:
a = 46656
b = a.toString(36) // b = "1000"
如果您想将它从base36转换回数字,请使用parseInt:
b = "1000"
c = parseInt(c, 36) // c = 46656
如果您希望字符串为4个字符,请在46656(" 1000")和1679615(" zzzz")之间生成一个数字。
答案 1 :(得分:0)
您可以使用Node.js应用生成ID。随机使用Math
Math.random().toString(36).substr(2, 4) // You can change the `4` to change the length.
它将输出如下字符串:92q6
详情:
Math.random() // 0.2433971674181521
Math.random().toString(36) // 0.ghlhdmdypp8bmx6r
javascript中数字类型的toString方法采用可选参数将数字转换为给定的基数。例如,如果你传递两个,你会看到你的数字用二进制表示。类似于十六进制(基数16),基数36使用字母来表示超过9的数字。通过将随机数转换为基数36,您将得到一堆看似随机的字母和数字。