Unicode データの列サイズの見積もり
Unicode データを保管する表を作成する場合は、表示の長さではなくストレージの長さの列を割り振ります。
プロシージャー
Unicode データの列のサイズを見積もるには、次のいずれかのアクションを実行します。
- UTF-8 データでは、Unicode 以外の表に割り振るサイズの 3 倍の列サイズを割り振ります。
例えば、EBCDIC 表の名前列に CHAR(10) を使用する場合、Unicode 表では同じ列について VARCHAR(30) を使用します。 この列には 30 バイト (または 10 個の 3 バイト文字) を格納できます。 この場合、CHAR ではなく VARCHAR を使用します。これは、長さ (30) が 18 よりも大きいためです。 (18 は、従来 CHAR の代わりに VARCHAR を使用する必要がある場合の長さです。)
この見積もりでは、UTF-8 データの拡張が最大の場合を考慮しています。 SBCS データについては、ASCII または EBCDIC の 1 バイトが、UTF-8 では最大で 3 バイトに拡張されます。 混合データ (中国語、日本語、または韓国語の文字など) の場合、同じく最大の場合のシナリオが適用されます。 エンコードに応じて、2 バイト、3 バイト、および 4 バイトの文字を使用しますが、これは UTF-8 文字で、最大 4 バイトに拡張されます。 ただし、これらの文字は、ASCII または EBCDIC では 1 バイトを超えるサイズを使用していたため、UTF-8 では、同様に最大で元のサイズの 3 倍に拡張されます。
- UTF-16 データでは、Unicode 以外の表に割り振るサイズの 2 倍の列サイズを割り振り、GRAPHIC または VARGRAPHIC データ・タイプを使用します。
例えば、EBCDIC 表の名前列に CHAR(10) を使用する場合、Unicode 表では同じ列について VARGRAPHIC(10) を使用します。 CHAR(10) は 10 バイトの長さです。 VARGRAPHIC(10) の長さは 20 バイト (または 10 個の 2 バイト文字に相当) です。
推奨: アプリケーションがCOBOLまたはPL/Iで書かれている場合は、 UTF-16 にデータを保存し、GRAPHICおよびVARGRAPHICデータ型を使用してください。 これにより、アプリケーション内の Unicode 形式と、データベース内の形式が一致します。 このセットアップにより、変換コストを抑えることができます。