CHARACTER SET属性で異なるサーバー文字セットを指定している文字列の連結の場合は、特に注意が必要です。
暗黙変換ルールが適用されます。
文字列が固定長文字列の場合、結果は可変長になり、その長さは連結される文字列の長さの合計に等しくなります。
この点は、文字列の長さがバイトで定義されているか文字数で定義されているかにかかわらず当てはまります。したがって、nバイト固定長KANJISJIS文字列とm文字固定長UNICODE文字列を連結すると、VARCHAR(m+n) CHARACTER SET UNICODE結果が生成されます。
次のテーブル定義を考えます。
CREATE TABLE tab1 (cunicode CHARACTER(4) CHARACTER SET UNICODE ,clatin CHARACTER(3) CHARACTER SET LATIN ,csjis CHARACTER(3) CHARACTER SET KANJISJIS);
テーブルtab1に次の値が挿入されます。
INSERT tab1 ('abc', 'abc', 'abc');
以下のテーブルは、こうした連結特性をまとめたものです。
連結 | 結果 | 結果のタイプ |
---|---|---|
cunicode || clatin | 'abcΔ abc' | VARCHAR(7) CHARACTER SET UNICODE |
clatin || csjis | 'abcabc' | VARCHAR(6) CHARACTER SET UNICODE |
cunicode || csjis | 'abcΔ abc' | VARCHAR(7) CHARACTER SET UNICODE |
KanjiEBCDICを除くすべてのKANJI1文字列の連結は、上記の説明のように動作します。ただし、KanjiEBCDICの場合は、結果式内の隣接するシフトアウト(<)文字とシフトイン(>)文字が削除されます。この場合、結果文字列には、必要に応じて<半角スペース>文字が末尾に埋め込まれます。