MySQL随机字符串长度超过32个字符

时间:2013-01-21 18:25:05

标签: mysql

我试图在MySQL中使用:

生成一个36个字符的随机字符串
UPDATE my_table SET entity_uid = substring(MD5(RAND()) FROM 1 FOR 36);

但结果总是一个32个字符的字符串。有没有办法获得更长的字符串?

4 个答案:

答案 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();