VARCHARデータ型 - 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

内部文字を格納するための長さ0からnの可変長文字列を表わします。LONG VARCHARは、内部文字を格納するための最長の可変長文字列を指定します。

構文

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

  LONG VARCHAR |
  
  VARGRAPHIC ( n ) |
  
  LONG VARGRAPHIC

} [ attributes [...] ]
n
このサーバー文字セットで定義された列に割り当てられる最大文字数またはバイト数。
  • LATINサーバー文字セットの場合、nの最大値は64000文字です。
  • UNICODEおよびGRAPHICサーバー文字セットの場合、nの最大値は32000文字です。
  • KANJISJISサーバー文字セットの場合、nの最大値は32000バイトです。
server_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準拠

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

LONG VARCHAR、VARGRAPHIC、およびLONG VARGRAPHICは、ANSI SQL:2011規格に対するTeradataの拡張機能です。

格納

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

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

クライアントのシステム データ型との変換は、Teradata Databaseによって行なわれます。このデータ型は、国際文字セットをサポートします。

VARCHARの外部表現

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

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

LONG VARCHARの外部表現

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

次の表は、各種のサーバー文字セットの場合にLONG VARCHARデータがどのように表現されるかを示しています。これらの定義以外では、LONG VARCHAR文字列の動作はVARCHAR文字列と同じです。

サーバー文字セット LONG VARCHARの外部表記に相当する表記
  • LATIN
  • KANJI1
VARCHAR(64000)
  • UNICODE
  • GRAPHIC
  • KANJISJIS
VARCHAR(32000)

VARGRAPHICの外部表現

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

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

VARGRAPHIC(n)文字列の長さをkと定義します。ここで、0 ≤ k ≤ nです。

クライアントCPUアーキテクチャ クライアントの内部データ形式
IBMメインフレーム 2バイトのSMALLINT(kの長さカウント)、続いてk個のDB2 GRAPHIC文字。合計は2+2k EBCDICバイトになる。

表示形式

VARCHAR(n)のデフォルトの表示形式は、X(n)です。

LONG VARCHARのデフォルトの表示形式は、有効なサーバー文字セットに応じてX(32000)またはX(64000)になります。

詳細については、データ型のデフォルトの形式を参照してください。

グラフィック データ

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

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

VARCHAR(n) CHARACTER SET GRAPHIC定義のnの最大値は32000です。デフォルト長はありません。長さを指定しない場合、エラーになります。

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

関連トピック

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

例: VARCHARデータ型

以下の文は、InfoKeyとInfoDataの2つのVARCHAR列を定義するテーブルを作成します。

CREATE TABLE InfoTable
  (InfoKey VARCHAR(10) NOT NULL
  ,InfoData VARCHAR(16384) )
UNIQUE PRIMARY INDEX ( InfoKey );

以下の文は、長さが異なる文字データをInfoKeyとInfoDataの列に挿入します。

INSERT INTO InfoTable ('001_5_799', 'Data for key 001_5_799');
INSERT INTO InfoTable ('2', 'Data for key 2');

例: LONG VARCHARデータ型

以下の文は、InfoDataというLONG VARCHAR列を定義するテーブルを作成します。

CREATE TABLE InfoTable (InfoData LONG VARCHAR);