サーバー文字セットが異なる文字列の連結 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/tpt1555966086716.ditamap
dita:ditavalPath
ja-JP/tpt1555966086716.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

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の場合は、結果式内の隣接するシフトアウト(<)文字とシフトイン(>)文字が削除されます。この場合、結果文字列には、必要に応じて<半角スペース>文字が末尾に埋め込まれます。