大きな文字列を表わします。CLOB (Character Large Object)列には、単純テキスト、HTML文書などの文字データを入れることができます。
CLOB列はXMLまたはJSON文書を保存できます。ただし、その目的にはTeradata XMLとTeradata JSONのデータ型を使用することをお勧めします。
{ CHARACTER LARGE OBJECT | CLOB } [ ( n [ K | M | G ] ) ] [ { CHARACTER | CHAR } SET { LATIN | UNICODE } ] [ attribute [...] ]
- n
- CLOB列に割り振る文字数。最大値は、サーバー文字セットに応じて異なります。
- LATINサーバー文字セットの場合、nは2097088000を超えてはなりません。
- UNICODEサーバー文字セットの場合、nは1048544000を超えてはなりません。
- K
- CLOB列に割り当てる文字数はnKです。K = 1024であり、nの最大値は次のとおりです。
- LATINサーバー文字セットの場合、nは2047937を超えてはなりません。
- UNICODEサーバー文字セットの場合、nは1023968を超えてはなりません。
- M
- CLOB列に割り当てる文字数はnMです。M = 1024Kであり、nの最大値は次のとおりです。
- LATINサーバー文字セットの場合、nは1999を超えてはなりません。
- UNICODEサーバー文字セットの場合、nは999を超えてはなりません。
- G
- CLOB列に割り振る文字数はnGとなります。ただしG=1024Mです。Gを指定する場合、nは1でなければならず、サーバー文字セットはLATINでなければなりません。
- CHARACTER SET
- 定義するCLOB列のサーバー文字セット。
- LATINサーバー文字セットは、ASCII ISO 8859 Latin1またはISO 8859 Latin9レパートリーの固定8ビット文字を表わします。
- UNICODEサーバー文字セットは、Unicode®標準からの固定16ビットまたは32ビットの文字を表わします。
- attribute
- 適切なデータ型、列記憶、または列制約属性。
ANSI準拠
CLOBは、ANSI SQL:2011に準拠しています。
外部表現
クライアント アプリケーションは、Teradata Databaseと対話するときに、常にその文字セット(文字データ用の使用形式)を指示します。Teradata Databaseは、すべての文字データをその形式でクライアント アプリケーションに返します。
マルチバイト文字が関係しているときは、先行シフト アウトと後続のシフト イン文字を除く、長さが(n-2)/2のマルチバイト文字が常にその表現に示されます。
以下のテーブルは、CLOBデータ型のクライアント表現を示したものです。アプリケーション定義とクライアント データ型を判別するのは、アプリケーション プログラマの責任です。
BLOB文字列の長さをkと定義します。ここで、0 ≤ k ≤ nです。
クライアントCPUアーキテクチャ | クライアントの内部データ形式 |
---|---|
IBMメインフレーム | 8バイト(最上位バイトが先行)の長さカウントkとその後に続くkバイトのEBCDIC文字データ。合計はk+8バイト。 |
|
8バイト(最上位バイトが先行)の長さカウントkとその後に続くkバイトのASCII文字データ。合計はk+8バイト。 |
Intel | 8バイト(最下位バイトが先行)の長さカウントkとその後に続くkバイトのASCII文字データ。合計はk+8バイト。 |
制限
テーブルのLOB列の最大許容数は32です。
キュー テーブルにはCLOB列を含めることができません。
LOB列をインデックスの構成要素にすることはできません。この制約のために、少なくとも1つのLOB以外の列をテーブルに定義する必要があります。
CHARACTER SET句では、CLOB列に対して以下のサーバー文字セットを指定できます。
- LATIN
- UNICODE
CLOBを処理する関数
次に、いくつかの関数およびCLOB型をサポートする演算子を示します。
- CHARACTERS/CHARS/CHAR
- MCHARACTERS
- CHARACTER_LENGTH
- TRANSLATEとTRANSLATE_CHK
- SUBSTRING/SUBSTR
- 連結演算子(||)
- TYPE
- 明示的なデータ型変換(CASTおよびTeradataの変換構文)
- ユーザー定義関数(UDF)
- ストアド プロシージャ
- 外部ストアド プロシージャ
例: CLOBデータ型
以下の例は、clargeというCLOB列を定義するテーブルを作成します。
CREATE TABLE t1 (id INTEGER ,clarge CLOB(2K) CHARACTER SET UNICODE);
Teradata Databaseでは、UNICODEサーバー文字セットを使って文字データが格納されます。
例: CLOBデータの挿入
以下の例は、CLOBのある部分を1つのテーブルに挿入し、CLOBの残りの部分を別のテーブルに挿入するストアド プロシージャを示しています。
CREATE TABLE LocalData(ld_ID INTEGER, ld_DATA CLOB); CREATE TABLE GlobalData (gd_ID INTEGER, gd_DATA CLOB); CREATE PROCEDURE DataSplitter(IN local_ID INTEGER, IN global_ID INTEGER, IN all_DATA CLOB) BEGIN INSERT LocalData (local_ID, SUBSTRING(all_DATA FROM 1 FOR 128546)); INSERT GlobalData (global_ID, SUBSTRING(all_DATA FROM 128547)); END;
関連トピック
詳細情報 | 参照先 |
---|---|
CLOBタイプをサポートする関数と演算子 | Teradata Vantage™ - SQL関数、式、および述部、B035-1145。 |
CLOBタイプを処理するUDFと外部ストアド プロシージャのインプリメンテーション | Teradata Vantage™ - SQL外部ルーチン プログラミング、B035-1147。 |
CLOBローカル変数またはパラメータを使用するストアド プロシージャのインプリメンテーション |
|