Вставка шестнадцатеричного значения mysql
-
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);