2013-09-29 2 views
0

Следующий запрос изменяет регистр столбца md5 от нижнего к верхнему. Значение MD5 было предоставлено через функцию PHP md5(), и я использую ее в HTML-ссылке для отправки данных $ _GET на сервер. Почему случай меняется? Является ли один случай более правильным, чем другой? Я понимаю, что могу с этим справиться, используя LOWER().Почему mysql HEX меняет двоичный столбец?

http://sqlfiddle.com/#!2/414c8/1

CREATE TABLE myTable (
    id INT NOT NULL AUTO_INCREMENT,md5 BINARY(16), 
    PRIMARY KEY (id)) 
ENGINE = InnoDB; 

INSERT INTO myTable(md5)VALUES(UNHEX("06fcf5b90b916bdc533e2badec396b90")); 

SELECT id,HEX(md5) FROM myTable; 

ID HEX(MD5) 
1 06FCF5B90B916BDC533E2BADEC396B90 

ответ

1

Это не меняет дела. HEX() просто возвращает заглавные буквы. Способ сохранения значения не имеет в нем никаких букв - это фактическое двоичное представление. Невозможно сохранить «случай» в этой колонке.

Вы всегда можете сделать колонку шире и сохранить сам текст (без HEX/UNHEX), если вы не захотите выполнить преобразование позже.

Смежные вопросы