SUBSTR 関数は、LOB 型データの amount バイトまたは文字を返します(LOB の先頭からの絶対オフセットから計算します)。
固定幅 n バイトの CLOB 型データについて、SUBSTR の入力値が (32767 / n) より大きい場合、SUBSTR は長さが (32767 / n) または CLOB の長さのいずれか小さい方を返します。CLOB は可変幅の文字列型であるため、n は CLOB の最大バイト幅となります。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供されます。
構文
DBMS_LOB.SUBSTR (
lob_loc IN BLOB,
amount IN INTEGER := 32767,
offset IN INTEGER := 1)
RETURN RAW;
DBMS_LOB.SUBSTR (
lob_loc IN CLOB CHARACTER SET ANY_CS,
amount IN INTEGER := 32767,
offset IN INTEGER := 1)
RETURN VARCHAR2;
パラメータの説明
パラメータ |
説明 |
|---|---|
| lob_loc | 読み取る LOB ロケーターです。DBMS_LOBの使用方法を参照してください。 |
| amount | 読み取るバイト数(BLOB の場合)または文字数(CLOB の場合)。 |
| offset | LOB の読み取り開始位置のバイト数(BLOB の場合)または文字数(CLOB の場合)のオフセット(初期値は1)。 |
戻り値
戻り値 |
説明 |
|---|---|
| RAW | パラメータに BLOB を含む関数のオーバーロードです。 |
| VARCHAR2 | CLOB バージョンです。 |
| NULL | 次のいずれかの状況が考えられます:
|
使用方法
VARCHAR2バッファの形式は、CLOBパラメータの形式と一致している必要があります。つまり、LOBパラメータの型がCLOBの場合、バッファにはCHARデータを含める必要があります。クライアントから
DBMS_LOB.SUBSTRを呼び出すと、返されるバッファにはクライアントの文字セットのデータが含まれます。データベースは、ユーザーにバッファを返す前に、サーバーの文字セットからLOB値をクライアントの文字セットに変換します。DBMS_LOB.SUBSTRは、LOBに格納されている文字に基づいて、8191文字以上を返します。文字のバイトサイズが利用可能なバッファを超えるためにすべての文字が返されない場合、ユーザーは新しいオフセットでDBMS_LOB.SUBSTRを再呼び出して残りの文字を読み取るか、すべてのデータが取得されるまでサブルーチンを繰り返し呼び出す必要があります。必要に応じて、
SUBSTRは読み取り前にLOBを取得します。