2015-01-11 2 views
0

Общаюсь с MySQL сервером версии 5.0.45 с помощью MySQL Query Browser 1.2.14MySQL вставки бинарных столбцов

Have столбец типа двоичный (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()?

SELECT HEX(h) FROM test; 

Даст вам:

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

Теперь, если вы хотите, чтобы лечить шестнадцатеричное значение как число, необходимо использовать CAST(h AS UNSIGNED).

SELECT CAST(X'AABBCCDDEEFF' AS UNSIGNED); 

Выход:

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

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

Дальнейшее чтение

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