CHARACTERデータ型 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

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/zsn1556242031050.ditamap
dita:ditavalPath
ja-JP/zsn1556242031050.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

Teradata Databaseの内部文字の格納用の固定長の文字列を表わします。

構文

{ { CHARACTER | CHAR } [ ( n ) ]
    [ { CHARACTER | CHAR } SET server_character_set ] |

    GRAPHIC [ ( n ) ]

} [ attributes [...] ]
n
このサーバー文字セットで定義された列に割り当てられる文字数またはバイト数。
  • LATINサーバー文字セットの場合、nの最大値は64000文字です。
  • UNICODEおよびGRAPHICサーバー文字セットの場合、nの最大値は32000文字です。
  • KANJISJISサーバー文字セットの場合、nの最大値は32000バイトです。
nの値を指定しない場合のデフォルトは1になります。
server_character_set
定義する文字タイプの列のサーバー文字セット。CHARACTER SET句を参照してください。
CHARACTER SETserver_character_set句を省略した場合のデフォルトのサーバー文字セットは、CREATE USER文のDEFAULT CHARACTER SET句でユーザーがどのように定義されているかによって異なります。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE USER」を参照してください。
Teradataの国際化計画に従って、今後、KANJI1サポートは推奨されず、近い将来に廃止されます。KANJI1をデフォルトの文字セットとして使用することはできません。システムはデフォルトのKANJI1文字セットをUNICODE文字セットに変更します。KANJI1の新規オブジェクトの作成は、高度に制限されています。KANJI1を使用するクエリーやアプリケーションの多くは、従来通り動作する可能性はありますが、KANJI1を使用するサイトはできるだけ早く別の文字セットに変換する必要があります。
server_character_setのサポートされている値は、次のとおりです。
  • LATINは、ASCII ISO 8859 Latin1またはISO 8859 Latin9レパートリーの固定8ビット文字を表わします。LATINサーバー文字セットを参照してください。
  • UNICODEは、Unicode®標準からの固定16ビットまたは32ビットの文字を表わします。UNICODEサーバー文字セットを参照してください。
  • GRAPHICは、DB2用にIBM Corporationで定義された固定16ビットのUNICODE文字を表わします。GRAPHICサーバー文字セットを参照してください。
  • KANJISJISは、KanjiShiftJISの特性に依存する日本語アプリケーション用の1バイト/マルチバイト文字の混合を表わします。KANJISJISサーバー文字セットを参照してください。
attributes
適切なデータ型、列記憶、または列制約属性。
具体的な説明については、主なデータ型属性記憶属性と制約属性を参照してください。

ANSI準拠

CHARACTERは、ANSI SQL:2011に準拠しています。

GRAPHICは、ANSI SQL:2011規格に対するTeradataの拡張機能です。

ストレージ

文字データは、使用されているサーバー文字セットに応じて文字またはバイト単位で割り当てられます。1文字当たりの格納バイト数は、次の表に示すように、サーバー文字セットによって異なります。

サーバー文字セット サーバー使用形式 サーバーのスペース割り当て 異種クライアント間で共用可能か?
LATIN 固定8ビットのLATIN 文字ベース はい
UNICODE 固定16ビットのUNICODE
GRAPHIC 固定16ビットのUNICODE
KANJISJIS 1バイトとマルチバイトが混在するKANJISJIS バイト ベース はい

CHARACTERの外部表現

クライアント アプリケーションは、Teradata Databaseと対話するときに、その文字セット(文字データ用の使用形式)を指示します。サーバーは、すべての文字データをその形式でクライアント アプリケーションに返します。

クライアントのシステム データ型との変換は、Teradata Databaseによって行なわれます。

CHARACTER型の場合にエクスポートされるバイト数の詳細は、Teradata SQL文字列およびクライアント物理バイトを参照してください。

表示形式

CHARACTER(n)のデフォルトの表示書式は、X(n)です。例えば、X(5)の場合、‘HELLO’のデータは‘HELLO’のように表示されます。

GRAPHICデータ

GRAPHICを使って、マルチバイトの文字データを表わすことができます。

GRAPHIC(n)は、CHARACTER(n) CHARACTER SET GRAPHICと等価です。すべてのGRAPHIC(n)データをCHARACTER(n) CHARACTER SET GRAPHICと定義するのが最善策です。

グラフィック列の各マルチバイト文字は、1論理文字当たり2バイトであるものとして格納されます。したがって、グラフィック データ列は、必ず、evenのバイト数を表わすことになります。

長さ(n)なしでGRAPHICを指定した場合、デフォルトはGRAPHIC(1)になります。

以下のルールが、GRAPHICデータの切捨てと文字の埋込みに適用されます。

グラフィック文字列の状況 结果
列の指定長より短い 残りのスペースにグラフィック埋込み文字が入ります。
列の指定長より長い 余分な文字が切り捨てられます。

グラフィック データとクライアント文字セット

グラフィック タイプでは、次のクライアント文字セットが可能です。
  • KanjiEBCDICの2バイトのグラフィック データ
  • 2バイトのShift-JISコードを表わすKanjiShift-JIS
  • 固定長の2バイトのEUC文字を表わすKanjiEUC

KanjiEBCDICのグラフィック文字列リテラルでは、次の構文を使用します。



KanjiEBCDICの文字セットでは、グラフィック文字列内のマルチバイト文字は、次のように、シフト アウト/シフト イン文字で区切る必要があります。

INSERT INTO TableEBCDIC (ColGRAPH)
 VALUES (G'<AB>');

ここで、ABは、有効なKanjiEBCDICマルチバイト文字列であり、Gは文字列がグラフィック レパートリーに属さなければならないことを示します。また、各単一引用符は1バイト文字です。

GRAPHICの外部表現

次の表では、IBM DB2 GRAPHICタイプのクライアント表現をリストしています。

アプリケーション定義とクライアント データ型を判別するのは、アプリケーション プログラマの責任です。

クライアントCPUアーキテクチャ クライアントの内部データ形式
IBMメインフレーム n個のDB2 GRAPHIC文字の2nバイト

関連トピック

詳細情報 参照先
文字リテラル 文字列リテラル
トランザクションとエラー処理を含む、外部から内部へと内部から外部への文字データの変換 Teradata Vantage™ - Advanced SQL Engine国際文字セット サポート、B035-1125

例: CHARACTERデータ型

以下のテーブル定義では、Sex (性別)列に長さ1のCHARACTERデータ型が割り当てられ、Frgn_Lang (外国語)列に長さ7のCHARACTERデータ型が割り当てられます。

CREATE TABLE PersonalData
  (Id INTEGER
  ,Age INTEGER
  ,Sex CHARACTER NOT NULL UPPERCASE
  ,Frgn_Lang CHARACTER(7) NULL UPPERCASE );

例: グラフィック データとクライアント文字セット

次のテーブルについて考察します。

CREATE TABLE Product1Data
  (id1 INTEGER
  ,code1 CHARACTER(3) CHARACTER SET GRAPHIC);

列code1には、次のデータが入るものとします。

457F4577456D

レコード モードまたは標識モードのKanjiEBCDICセッションでは、次のようなcode1の内容がユーザーに返されます。

457F4577456D

フィールド モードのKanjiEBCDICでは、次のようなcode1の内容がユーザーに返されます。

0E457F4577456D0F