web-dev-qa-db-ja.com

MySqlに16進値を挿入します

VARBINARY列のあるテーブルがあります。 16進値0x4D、0x2A、0xFFをそれぞれ表す「4D2AFF」などの文字列を挿入する必要があります。このステートメントを作成するにはどうすればよいですか?

24
Tim

UNHEX() 関数を使用して16進ペアの16進文字列をバイナリに変換し、 HEX() を使用してその逆を行うことができます。

つまり.

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

そして

SELECT HEX(col) FROM tbl
33
BalusC

または、これも実行できます。

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

詳細については、 this を参照してください。

7
nawfal

Hex()関数とUnhex()関数についてはすでに説明しましたが、別のパターンについても検討したいと思います。

前後の文字列をどのように使用していますか?可能な限り最後までカバーを回避できる場合、それは非常に優先されます。そうすれば、何かがうまくいかなかったり、DBから抽出したオブジェクトがすでに変換されているかどうかを忘れたりするリスクがありません。

3
aronchick

これは、16進値とバイナリフィールドの適切な処理を思い出させるために私がいつも参照しているすばらしいブログ投稿であり、パフォーマンスへの影響を示しています。

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

2
Riedsio