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

大きな文字列を表わします。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を超えてはなりません。
nの値を指定しない場合のデフォルトは最大値になります。
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ビットの文字を表わします。
CHARACTER SET句を省略した場合のデフォルトのサーバー文字セットは、CREATE USER文のDEFAULT CHARACTER SET句にユーザーがどのように定義されているかによって異なります。詳細は、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE USER」を参照してください。
CHARACTER SET句も参照してください。
attribute
適切なデータ型、列記憶、または列制約属性。
CLOB列では、以下の属性がサポートされます。
  • NOT NULL
  • FORMAT
  • TITLE
NOT NULL属性の詳細については、デフォルト値の制御句を参照してください。
FORMATおよびTITLE属性の詳細については、データ型の形式および形式句を参照してください。

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バイト。
  • UTS
  • RISC
  • Motorola 68000
  • WE 32000
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ローカル変数またはパラメータを使用するストアド プロシージャのインプリメンテーション
  • <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「CREATE PROCEDURE」
  • Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL、B035-1148