MySQLには、16進値を操作するときに役立つさまざまな関数が含まれています。最も明白な関数の1つは、HEX()
です。 関数。文字列を16進数に変換できます。
ただし、16進文字列をより読みやすい文字列に変換し直したい場合があります。それがこの記事の内容です。
MySQLで文字列を「アンヘックス」する3つの方法は次のとおりです。
-
UNHEX()
機能 -
X
16進表記 -
0x
表記
以下は、これらの各方法の例です。
UNHEX()関数
これは、16進文字列を「アンヘックス」するために特別に構築された文字列関数です。
例:
SELECT UNHEX('4361747320616E6420646F6773');
結果:
+-------------------------------------+ | UNHEX('4361747320616E6420646F6773') | +-------------------------------------+ | Cats and dogs | +-------------------------------------+
UNHEX()
の方法 動作は、引数内の文字の各ペアを16進数として解釈し、それを数値で表されるバイトに変換することです。戻り値はバイナリ文字列です。
X表記
文字列をアンヘックスする別の方法は、X
を使用することです。 表記。
例:
SELECT X'4361747320616E6420646F6773';
結果:
+-------------------------------+ | X'4361747320616E6420646F6773' | +-------------------------------+ | Cats and dogs | +-------------------------------+
X
表記は標準SQLに基づいています。この表記では大文字と小文字が区別されないため、大文字のX
を使用するかどうかは関係ありません。 または小文字。これは、0x
とは対照的です 大文字と小文字を区別する表記。
X
に注意してください 表記には偶数桁が必要です。桁数が奇数の場合は、先行ゼロで埋めることができます。
0x表記
文字列をアンヘックスする3番目の方法は、0x
を使用することです。 表記。
例:
SELECT 0x4361747320616E6420646F6773;
結果:
+------------------------------+ | 0x4361747320616E6420646F6773 | +------------------------------+ | Cats and dogs | +------------------------------+
0x
表記はODBCに基づいており、BLOB列の値を提供するために16進文字列がよく使用されます。前述のように、0x
表記は大文字と小文字が区別されるため、大文字のX
を使用すると機能しません 。
0x
表記は奇数の桁で機能しますが、それは奇数を先行ゼロとして解釈するためです(したがって、偶数になります)。
数値をアンヘックス
彼はHEX()
であることに注意してください 関数は数値では機能しません。これを行うには、CONV()
を使用します 代わりに関数を使用してください(MySQLで数値をアンヘックスする方法を参照してください)。