Вставьте шестнадцатеричные значения в MySql - PullRequest
23 голосов
/ 27 июня 2010

У меня есть таблица с VARBINARY столбцом. Мне нужно вставить строку, например «4D2AFF», которая представляет шестнадцатеричные значения 0x4D, 0x2A и 0xFF соответственно. Как мне построить это утверждение?

Ответы [ 4 ]

32 голосов
/ 27 июня 2010

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

Т.е.

INSERT INTO tbl (col) VALUES (UNHEX('4D2AFF'))

и

SELECT HEX(col) FROM tbl
7 голосов
/ 27 июня 2012

Или вы можете сделать даже это:

INSERT INTO tbl (col) VALUES (X'4D2AFF')

См. это для получения дополнительной информации.

3 голосов
/ 27 июня 2010

Функции Hex () и Unhex () уже упоминались, но я хотел бы также взвесить альтернативный шаблон.

Как вы используете строки до и после? Если вы можете избежать укрытия до последней возможной минуты, это очень предпочтительно. Таким образом, вы не рискуете что-то пойти не так, не забывая, был ли преобразованный вами объект из БД уже преобразован или нет.

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

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

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

...