InfiniDBのデータ型の扱いは基本的にはMySQLと同様ですが、CHAR型、VARCHAR型の文字長の扱いは異なります。MySQLの場合は、CHAR(12)やVARCHAR(12)の「12」は文字数を表しますが、InfiniDBではこの数字はバイト数を表します。

例えば、InfiniDBがサポートしているキャラクタセットはUTF-8なので、日本語データの場合は1文字につき3バイト使用します。そのため、CHAR(12)やVARCHAR(12)の列に日本語データを挿入するときMySQLの場合は

1  2  3  4  5  6  7  8  9  10  11  12
ア シ ス  ト  本 社 は 市 ヶ  谷  で  す

といったように12文字入りますが、InfiniDBの場合は、

1  2  3  4
ア シ ス  ト  本 社 は 市 ヶ  谷  で  す

といったように4文字(12バイト)しか入りません。
12文字を入れたい場合には、

12文字 ✕ 3バイト = CHAR(36)

と指定する必要があります。

もしCHAR(12)の列に12文字のデータを挿入した場合は、先頭から12バイト(4文字)分が挿入され残りは切り捨てられます。
※切り捨てられた場合、Warningが表示されます。


その場合、データは以下のように12バイト分しか入りませんのでご注意ください。