我试图在MySQL中使用:
生成一个36个字符的随机字符串UPDATE my_table SET entity_uid = substring(MD5(RAND()) FROM 1 FOR 36);
但结果总是一个32个字符的字符串。有没有办法获得更长的字符串?
答案 0 :(得分:10)
一个选项是生成两个MD5哈希值,将它们连接在一起(总共64个十六进制字符),然后取出前36个字符:
SELECT SUBSTR(CONCAT(MD5(RAND()),MD5(RAND())),1,36)
(注意:MD5哈希是128位; MySQL MD5()函数返回32个十六进制字符。)
答案 1 :(得分:8)
如果您使用版本高于5.7.4的MySQL,则可以使用新添加的RANDOM_BYTES函数:
SELECT TO_BASE64(RANDOM_BYTES(40));
这会产生一个随机字符串,例如r633j3sfgE85f3Jz+3AEx6Xo6qPXPUZruNimhId18iy+J1qOgZyCgg==
。
答案 2 :(得分:2)
MD5将哈希值作为32个字符的十六进制数返回。
根据MySQL
计算字符串的MD5 128位校验和。价值是 以32个十六进制数字的字符串形式返回,如果参数为,则返回NULL 空值。例如,返回值可以用作散列键。看到 本节开头的注释关于存储哈希值 有效。
答案 3 :(得分:0)
UPDATE my_table SET entity_uid = UUID();