为什么mysql HEX会改变二进制列的情况?

时间:2013-09-29 14:08:44

标签: php mysql

以下查询将md5列的大小写从lower更改为upper。 MD5值是通过PHP的md5()函数提供的,我在HTML链接中使用它来将$ _GET数据发送到服务器。案件为何会改变?一个案例比另一个案件更合适吗?我知道我可以使用LOWER()处理它。

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

2 个答案:

答案 0 :(得分:1)

它不会改变案例。 HEX()只返回大写字母。存储值的方式根本没有字母 - 它是实际的二进制表示。没有办法保留该栏目中的“案例”。

如果您不希望稍后进行转换,您可以随时将列放宽并存储文本本身(不含HEX / UNHEX)。

答案 1 :(得分:0)

(define (sum ts)
  (foldr (lambda (x acc) (+ x acc)) 0 ts))