我正在构建一个应用程序,它需要一个唯一的标识符作为UserID(例如A3D7sRt
)。
在我的情况下,我已经指示不使用数字UserID,它应该是自动生成的。而且用户ID应该是6-8个字符长。这是因为它必须易于记忆。
这里使用GUID不是我的选择。因为GUID本质上是HEX,所以与相同长度的字符串相比,我将得到更少的唯一值。
那么在SQL中这样做的有效方法是什么?另外,我不想遇到频繁的唯一约束失败异常。
然后使用此值登录Android移动客户端。并且在登录过程中没有密码。
答案 0 :(得分:1)
根据Martin Smith和Zohar Peled条评论,我找到了解决方案。
这是T-SQL
DECLARE @Result VARCHAR(MAX) = ''
DECLARE @Val BIGINT = 101722230
IF (@Val <= 1000000)
BEGIN
Select 'Very Small ID Try With Large BIGINT'
return;
END
WHILE (@Val > 0)
BEGIN
SELECT @Result = CHAR(@Val % 36 + CASE WHEN @Val % 36 < 10 THEN 48 ELSE 55 END) + @Result,
@Val = FLOOR(@Val/36)
END
SElect @Result
<强>输出强>
1OK9DI
是上述代码的输出。 (认证)
感谢所有通过评论这个问题帮助我的人。