LOBデータ型

LOBデータ型は、TimesTen Scaleoutではサポートされていません。

ラージ・オブジェクト(LOB)データ型では、テキスト、イメージ、ビデオ、空間データなどの、サイズの大きい非構造化データを格納できます。LOBには、BLOBCLOBおよびNCLOBデータ型があります。

LOBデータ型の列では、データの挿入や更新を行うことができます。更新操作では、EMPTY_CLOBまたはEMPTY_BLOBを使用してLOB値をNULL、つまり空の値に設定したり、LOB全体を新しいデータに置き換えることができます。別のLOB値でLOB値を更新できます。LOB列が含まれている行を削除すると、LOB値も削除されます。

LOBデータ型のセマンティクスは、次のSQLセマンティクスと似ています。

  • BLOBデータ型はSQL VARBINARYセマンティクスを使用します。

  • CLOBデータ型はSQL VARCHAR2セマンティクスを使用します。

  • NCLOBデータ型はSQL NVARCHAR2セマンティクスを使用します。

次のSQL文、演算子および関数は、1つ以上のLOBデータ型を引数として受け入れます。

  • SQL文: CREATE TABLESELECTINSERTおよびUPDATE

  • 演算子: LIKEおよびIS [NOT] NULL

  • 関数: ASCIISTRCONCATINSTRINSTRBINSTR4LENGTHLENGTHBLOWERLPADNLSSORTNVLTRIMLTRIMRTRIMSUBSTRSUBSTRBSUBSTR4REPLACERPADSOUNDEXTO_DATETO_NUMBERTO_CHARおよびUPPER

ノート:

LOBデータ型のサポートの詳細は、前述の文、演算子および関数のドキュメントを参照してください。それぞれについて、「SQL文」「検索条件」および「関数」を参照してください。

説明

  • LOB変換SQL関数(TO_BLOBTO_CLOBおよびTO_LOB)は、必要なLOBデータ型への変換を行います。

  • LOB列は常に表外に保存されるため、LOB列の宣言時にはINLINE属性を使用できません。

  • 1つの表内に複数のLOBデータ型の列を定義できます。

  • LOB列で主キーを作成できません。LOB列には索引を定義できません。

  • ディテール表にLOB列が含まれている場合は、マテリアライズド・ビューを作成できません。

  • SQLに加えて、PL/SQL、ODBC、JDBC、OCIおよびPRO*C/C++でLOB固有のAPIを使用してLOBを作成および更新できます。これらのAPIの詳細は、該当するTimesTenの開発者ガイドを参照してください。

次の各項では、各LOBデータ型についてさらに詳しく説明します。

さらに、次の各項では、LOB全般に関する詳細情報も示します。

BLOB

バイナリLOB(BLOB)データ型は、構造化されていないバイナリ・ラージ・オブジェクトを格納するために使用します。BLOBデータの最大サイズは16MBです。

ノート:

TimesTenで16進リテラルをバイナリ・データとして割り当てる方法の詳細は、「定数」HexadecimalLiteralの説明を参照してください。

列でBLOBを定義する場合、VARBINARYやその他の可変長データ型の場合とは異なり、最大文字数は定義しません。かわりに、この列では次を定義します。

Command> CREATE TABLE blob_content (id NUMBER PRIMARY KEY, 
                                    blob_column BLOB ); 

BLOBを操作するために、次の関数が提供されます。

  • BLOBを初期化する方法には、空のBLOBを初期化するためのEMPTY_BLOB関数を含む、2つの方法があります。BLOBの初期化の詳細は、「LOBの初期化」を参照してください。空のLOBとNULLのLOBとの違いの詳細は、「NULLのLOBと空のLOBの違い」を参照してください。

  • バイナリ値をBLOBに変換するには、TO_LOBまたはTO_BLOB関数を使用します。詳細は、「TO_BLOB」および「TO_LOB」を参照してください。

CLOB

キャラクタLOB(CLOB)データ型は、シングルバイト・キャラクタ・データおよびマルチバイト・キャラクタ・データを格納するために使用します。CLOBデータの最大サイズは4MBです。CLOBに格納できる最大文字数は、シングルバイト文字セットまたはマルチバイト文字セットのいずれを使用しているかによって異なります。

列でCLOBを定義する場合、VARCHARやその他の可変長データ型の場合とは異なり、最大文字数は定義しません。かわりに、この列では次を定義します。

Command> CREATE TABLE clob_content (id NUMBER PRIMARY KEY, 
                                    clob_column CLOB ); 

CLOBを操作するために、次の関数が提供されます。

  • CLOBを初期化する方法には、空のCLOBを初期化するためのEMPTY_CLOB関数を含む、2つの方法があります。CLOBの初期化の詳細は、「LOBの初期化」を参照してください。空のLOBとNULLのLOBとの違いの詳細は、後述する「NULLのLOBと空のLOBの違い」を参照してください。

  • 文字列をCLOBに変換するには、TO_LOBまたはTO_CLOB関数を使用します。詳細は、「TO_CLOB」および「TO_LOB」を参照してください。

NCLOB

各国語キャラクタLOB(NCLOB)データ型は、Unicodeデータを格納するために使用します。NCLOBデータの最大サイズは4MBです。

列でNCLOBを定義する場合、VARCHARやその他の可変長データ型の場合とは異なり、最大文字数は定義しません。かわりに、この列では次を定義します。

Command> CREATE TABLE nclob_content (id NUMBER PRIMARY KEY, 
                                     nclob_column NCLOB ); 

NCLOBデータ型では、次の関数がサポートされます。

  • NCLOBを初期化する方法には、空のNCLOBを初期化するためのEMPTY_CLOB関数を含む、2つの方法があります。NCLOBの初期化の詳細は、「LOBの初期化」を参照してください。空のLOBとNULLのLOBとの違いの詳細は、次に説明する「NULLのLOBと空のLOBの違い」を参照してください。

  • 文字列をNCLOBに変換するには、TO_LOBまたはTO_CLOB関数を使用します。詳細は、「TO_CLOB」および「TO_LOB」を参照してください。

NULLのLOBと空のLOBの違い

NULLのLOBは、空のLOBとは意味が異なります。

  • NULLのLOBはNULLの値を持つため、NULLLOBをリクエストするとNULLが返されます。

  • 空のLOBは、EMPTY_CLOBまたはEMPTY_BLOB関数により初期化されます。これらの関数はLOBを初期化して、長さが0(ゼロ)のNULL以外の値にします。EMPTY_CLOBまたはEMPTY_BLOB関数を使用して、NULL値不可列でLOBを初期化することもできます。

LOBの初期化

次の2つの方法のいずれかにより、LOBを初期化できます。

  • EMPTY_BLOBまたはEMPTY_CLOB関数を使用して、BLOBCLOBまたはNCLOB列に空のLOBを挿入できます。これは、データがないが、データの準備用にLOBを作成する場合に役立ちます。NULL値不可のLOB列を初期化する場合にも有用です。

  • データを直接挿入することにより、LOBを初期化します。EMPTY_BLOBまたはEMPTY_CLOB関数を使用してLOBを初期化する必要はなく、単にデータを直接挿入できます。

次に、各タイプの初期化の例を示します。

次の例に示すように、EMPTY_CLOB関数を使用してLOBを初期化できます。

Command> INSERT INTO clob_content (id, clob_column)
         VALUES (1, EMPTY_CLOB( ) );
1 row inserted.

次の例に示すように、データを直接挿入して、LOBを初期化できます。

Command> INSERT INTO clob_content(id, clob_column)
         VALUES (4, 'Demonstration of the LOB initialization.');
1 row inserted.

次の例に示すように、UPDATE文を使用して、既存のLOB値を初期化または更新できます。

Command> UPDATE blob_content
         SET blob_column = 0x000AF4511
         WHERE id = 1;
1 row updated.

Command> SELECT * FROM blob_content;
 < 1, 0000AF4511 >
1 rows found.

Command> UPDATE clob_content
         SET clob_column = 'Demonstration of the CLOB data type '
         WHERE id = 1;
1 row updated.

Command> SELECT * FROM clob_content;
 < 1, Demonstration of the CLOB data type >