数値は、10進数と16進数の2種類に分けられます。
10進数
10進数は、正確な数値(整数と固定小数点数)と浮動小数点数に分けられます。数値は、小数点 . を10進数区切り文字として使用できますし、負の値を表すために前にマイナス記号 - を付けることもできます。
DECIMAL データ型は固定小数点型であり、正確な計算を行います。FLOAT および DOUBLE データ型は浮動小数点型であり、近似計算を行います。
説明
DECIMAL 型はサイズを縮小できます(例えば、DECIMAL(10, 2) を DECIMAL(9, 2) に変更することができます)。
正確な数値には、整数部または小数部、あるいはその両方が含まれます。例:1、.2、3.4、-5、-6.78、+9.10。
近似数は、科学記数法で表され、末尾に小数部と指数が続きます。例:1.2E3、1.2E-3、-1.2E3、-1.2E-3。
見た目が似ている2つの数値は、異なる扱いを受ける場合があります。例えば、2.34 は正確な(固定小数点)数値ですが、2.34E0 は近似数(浮動小数点)数値です。
16進数
16進数は整数値のみをサポートします。X または 0x のプレフィックスで始まり、A から F までの英字を含むことができます。すべての英字は大文字と小文字を区別しません。
以下は有効な16進数です:
X'01AF'
X'01af'
x'01AF'
x'01af'
0x01AF
0x01af
以下は無効な16進数です:
X'0H'(H は16進数ではありません)
X プレフィックスを使用する値は、偶数桁である必要があります。そうでない場合、構文エラーが発生します。この問題を回避するには、値を 0 で埋めてください。例:X'0FFF'。
0x プレフィックスを使用する値が奇数桁の場合、余分な先頭 0 があると見なされます。例えば、0xaaF は 0x0aaF と解釈されます。
デフォルトでは、16進数はバイナリ文字列であり、各16進数のペアが1文字を表します。
obclient> SELECT 0x5461626c65, CHARSET(0x5461626c65);
+--------------+-----------------------+
| 0x5461626c65 | CHARSET(0x5461626c65) |
+--------------+-----------------------+
| Table | binary |
+--------------+-----------------------+
1 row in set
空の16進数値(X' ')は、長さゼロのバイナリ文字列として計算されます。数値に変換すると0が出力されます。
obclient> SELECT X''+0;
+-------+
| X''+0 |
+-------+
| 0 |
+-------+
1 row in set
文字列または数値を16進数形式の文字列に変換するには、HEX() 関数を使用します。
obclient> SELECT HEX('dog');
+------------+
| HEX('dog') |
+------------+
| 646F67 |
+------------+
1 row in set
obclient> SELECT X'646F67';
+-----------+
| X'646F67' |
+-----------+
| dog |
+-----------+
1 row in set