2015-01-11 129 views
0

我与MySQL服务器版本5.0.45通过MySQL查询浏览器进行通信1.2.14MySQL的插入

类型的有无列二进制(6)

CREATE TABLE `test` (
    `tid` int(10) unsigned NOT NULL auto_increment, 
    `h` binary(6) NOT NULL, 
    PRIMARY KEY (`tid`), 
    KEY `idx1` (`h`) 
) ENGINE=MyISAM; 

查询之后

INSERT INTO test(h) VALUES(X'AABBCCDDEEFF'); 

我在添加的行损坏值的ħ字段中看到像

D0 84 C2 BB D0 9C 

似乎MySQL的处理的二进制值作为字符串,并根据存储它对一些字符集。但为什么它会忽略二进制列类型和X'...'符号的值插入? 我做错了或MySQL是?

回答

1

您是否尝试过使用HEX()?如果你想治疗的十六进制值作为一个数字,你需要使用CAST(h AS UNSIGNED)

 
|  HEX(H) | 
|--------------| 
| AABBCCDDEEFF | 

现在:

SELECT HEX(h) FROM test; 

会给你。

SELECT CAST(X'AABBCCDDEEFF' AS UNSIGNED); 

输出:

 
| CAST(X'AABBCCDDEEFF' AS UNSIGNED) | 
|-----------------------------------| 
|     187723572702975 | 

默认情况下,一个十六进制值被视为一个字符串,它是其中最有可能你想要什么,由你所选择的数据类型判断。这只是输出令你害怕。

进一步阅读