MySQL
では、X'
、val
'x'
、または
val
'0x
形式を使って記述された 16
進値をサポートしています。この場合、val
val
には 16 進数字
(0..9
、A..F
)
を指定します。16
進数字の大文字と小文字は関係ありません。X'
または
val
'x'
形式で値を記述する場合、val
'val
には偶数の桁を入れる必要があります。0x
構文を使用して値を記述する場合、奇数の桁が含まれる値は、先頭に追加の
val
0
が付いているものとして扱われます。たとえば、0x0a
と 0xaaa
は、0x0a
と
0x0aaa
として解釈されます。
数値のコンテキストでは、16 進値は整数 (64 ビット精度) のように動作します。文字列のコンテキストでは、16 進値はバイナリ列のように動作します。この場合、16 進数の各ペアが 1 文字に変換されます。
mysql>SELECT X'4D7953514C';
-> 'MySQL' mysql>SELECT 0x0a+0;
-> 10 mysql>SELECT 0x5061756c;
-> 'Paul'
16
進値のデフォルトのデータ型は文字列です。16
進値の文字列が確実に数値として扱われるようにするには、その文字列に対して
CAST(... AS
UNSIGNED)
を使用します。
mysql> SELECT 0x41, CAST(0x41 AS UNSIGNED);
-> 'A', 65
X'
構文は標準 SQL
に基づいています。hexstring
'0x
構文は ODBC に基づいています。16
進文字列は、BLOB
カラムの値を提供する目的で、ODBC
によって使用されることがよくあります。
文字列または数値を 16
進形式の文字列に変換するには、HEX()
関数を使用できます。
mysql>SELECT HEX('cat');
-> '636174' mysql>SELECT 0x636174;
-> 'cat'