Вставка шестнадцатеричного значения mysql - PullRequest
4 голосов
/ 29 ноября 2010

Я создал базу данных SQL, используя Java, я нуб, когда дело доходит до SQL, но Я настроил и настроил, у меня есть таблица, которая имеет два столбца, первый большое целое число, которое увеличивается, во-вторых, я попытался определить его как char, varchar и двоичный, но я все еще не получаю нужную функцию, скажем, я пытаюсь сохранить 0a шестнадцатеричное число в в столбце char я получаю сообщение об ошибке, я добавляю 0x в начало a, кажется, что он хранится, но когда я распечатываю содержимое, оно пустое или в некоторых случаях я получаю символы, такие как '/' или '?', я также пытался используя sql explorer, и он дает мне тот же результат при просмотре таблицы,

Моя проблема в том, что мне нужно сохранить шестнадцатеричную строку из восьми символов, такую ​​как eb8d4ee6.

Может кто-нибудь сообщить мне, как это можно сделать?

Ответы [ 2 ]

5 голосов
/ 09 декабря 2010

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

http://www.xaprb.com/blog/2009/02/12/5-ways-to-make-hexadecimal-identifiers-perform-better-on-mysql/

3 голосов
/ 29 ноября 2010

См. http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html

MySQL поддерживает шестнадцатеричные значения, записанные в формате X'val ', x'val' или 0xval, где val содержит шестнадцатеричные цифры (0..9, A..F).Буква из цифр не имеет значения.Для значений, написанных с использованием формата X'val 'или x'val', val должен содержать четное количество цифр.Для значений, записанных с использованием синтаксиса 0xval, значения, содержащие нечетное число цифр, рассматриваются как имеющие дополнительный начальный 0. Например, 0x0a и 0xaaa интерпретируются как 0x0a и 0x0aaa.

В числовом контексте действуют шестнадцатеричные значениякак целые числа (64-битная точность).В строковом контексте они действуют как двоичные строки, где каждая пара шестнадцатеричных цифр преобразуется в символ:

Вероятно, вам следует хранить шестнадцатеричное число в целочисленном столбце.Затем вы можете преобразовать обратно в гекс при выборе, используя функцию HEX().

Например,

INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);
...