我试图在MySQL中生成一个36个字符的随机字符串:
UPDATE my_table SET entity_uid = substring(MD5(RAND()) FROM 1 FOR 36);
Run Code Online (Sandbox Code Playgroud)
但结果总是一个32个字符的字符串.有没有办法获得更长的字符串?
spe*_*593 10
一种选择是生成两个MD5哈希值,将它们连接在一起(总共64个十六进制字符),然后取出前36个字符:
SELECT SUBSTR(CONCAT(MD5(RAND()),MD5(RAND())),1,36)
Run Code Online (Sandbox Code Playgroud)
(注意:MD5哈希是128位; MySQL MD5()函数返回32个十六进制字符.)
如果使用版本高于5.7.4的MySQL,则可以使用新添加的RANDOM_BYTES函数:
SELECT TO_BASE64(RANDOM_BYTES(40));
Run Code Online (Sandbox Code Playgroud)
这将导致一个随机字符串,如r633j3sfgE85f3Jz+3AEx6Xo6qPXPUZruNimhId18iy+J1qOgZyCgg==.