LOBデータ型
LOBデータ型は、TimesTen Scaleoutではサポートされていません。
ラージ・オブジェクト(LOB)データ型では、テキスト、イメージ、ビデオ、空間データなどの、サイズの大きい非構造化データを格納できます。LOBには、BLOB、CLOBおよびNCLOBデータ型があります。
LOBデータ型の列では、データの挿入や更新を行うことができます。更新操作では、EMPTY_CLOBまたはEMPTY_BLOBを使用してLOB値をNULL、つまり空の値に設定したり、LOB全体を新しいデータに置き換えることができます。別のLOB値でLOB値を更新できます。LOB列が含まれている行を削除すると、LOB値も削除されます。
LOBデータ型のセマンティクスは、次のSQLセマンティクスと似ています。
-
BLOBデータ型はSQLVARBINARYセマンティクスを使用します。 -
CLOBデータ型はSQLVARCHAR2セマンティクスを使用します。 -
NCLOBデータ型はSQLNVARCHAR2セマンティクスを使用します。
次のSQL文、演算子および関数は、1つ以上のLOBデータ型を引数として受け入れます。
-
SQL文:
CREATE TABLE、SELECT、INSERTおよびUPDATE -
演算子:
LIKEおよびIS [NOT] NULL -
関数:
ASCIISTR、CONCAT、INSTR、INSTRB、INSTR4、LENGTH、LENGTHB、LOWER、LPAD、NLSSORT、NVL、TRIM、LTRIM、RTRIM、SUBSTR、SUBSTRB、SUBSTR4、REPLACE、RPAD、SOUNDEX、TO_DATE、TO_NUMBER、TO_CHARおよびUPPER
説明
-
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の値を持つため、NULLのLOBをリクエストするとNULLが返されます。 -
空のLOBは、
EMPTY_CLOBまたはEMPTY_BLOB関数により初期化されます。これらの関数はLOBを初期化して、長さが0(ゼロ)のNULL以外の値にします。EMPTY_CLOBまたはEMPTY_BLOB関数を使用して、NULL値不可列でLOBを初期化することもできます。
LOBの初期化
次の2つの方法のいずれかにより、LOBを初期化できます。
-
EMPTY_BLOBまたはEMPTY_CLOB関数を使用して、BLOB、CLOBまたは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 >