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を取得します。