Вставка шестнадцатеричного значения mysql

StackOverflow https://stackoverflow.com/questions/4306219

  •  29-09-2019
  •  | 
  •  

Вопрос

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

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

Не мог бы кто-нибудь, пожалуйста, посоветовать мне, как это можно сделать?

Это было полезно?

Решение

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

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

Другие советы

Видишь 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'valval', значение val должно содержать четное количество цифр.Для значений, записанных с использованием синтаксиса 0xval , значения, содержащие нечетное количество цифр, рассматриваются как имеющие дополнительный начальный 0.Например, 0x0a и 0xaaa интерпретируются как 0x0a и 0x0aaa.

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

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

Например.,

INSERT INTO MyTable (`MyIntegerColumn`) VALUES (0xeb8d4ee6);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top