代码之家  ›  专栏  ›  技术社区  ›  luiscubal

MySQL上的MD5(RAND())只返回数字

  •  2
  • luiscubal  · 技术社区  · 14 年前

    我正在运行我在谷歌搜索时发现的示例代码:

    SELECT MD5(RAND())
    

    使用 CONV(MD5(RAND()), 10, 16) 似乎解决了我的问题,但是MySQL文档声明MD5函数应该返回一个已经是十六进制的字符串。

    我做错什么了吗?

    EDIT2:这个问题似乎只存在于phpMyAdmin中,而不是MySQL的命令行版本。

    mysql --version
    mysql  Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1
    

    MD5值示例:

    6338666264663132376461666163313063656535633666616266396530613335
    

    此外,CONV返回一个非常短的字符串,如:

    B9
    

    这个字符串通常是一位数,到目前为止我得到的最长的是5位数。

    2 回复  |  直到 14 年前
        1
  •  5
  •   luiscubal    14 年前

    没关系,我想出来了。

    不知何故,phpMyAdmin将结果读取为二进制。

    似乎是这个“显示为十六进制”选项导致了这些问题。取消勾选似乎可以解决问题。

        2
  •  0
  •   Hammerite    14 年前

    MySQL文档确实建议结果应该是一个字符串或空值。猜测一下,这可能是因为MD5()的参数是一个数字吗?如果你使用 SELECT MD5(CONCAT(RAND(), ''))