2015-01-11 55 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 | 

默認情況下,一個十六進制值被視爲一個字符串,它是其中最有可能你想要什麼,由你所選擇的數據類型判斷。這只是輸出令你害怕。

進一步閱讀