MD5 (RAND ()) на MySQL возвращает только цифры - PullRequest
3 голосов
/ 10 сентября 2010

Я использую этот пример кода, который я нашел во время поиска в Google:

SELECT MD5(RAND())

Но, к моему удивлению, MD5 возвращает простые цифры, а не шестнадцатеричные.Использование CONV(MD5(RAND()), 10, 16), похоже, решает мою проблему, но в документации MySQL говорится, что функция MD5 должна возвращать строку уже в шестнадцатеричном формате.

Я что-то не так делаю?

EDIT2: Только эта проблемакажется, что существует с phpMyAdmin, а не версия MySQL для командной строки.

РЕДАКТИРОВАТЬ: Моя версия 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 ]

4 голосов
/ 10 сентября 2010

Неважно, я понял.

Каким-то образом phpMyAdmin читает результат как двоичный файл. Кажется, есть опция «Показывать двоичное содержимое как HEX», которая включена по умолчанию.

Похоже, что эта опция "показывать как гекс" вызывает проблемы. Снятие отметки с этого, кажется, решает проблему.

0 голосов
/ 10 сентября 2010

Документация MySQL предполагает, что результатом должна быть строка или NULL, несмотря ни на что. Возможно, это происходит потому, что аргумент MD5 () - это число? Что произойдет, если вы используете SELECT MD5(CONCAT(RAND(), ''))?

...