ORACLEのCLOB型をサイズを指定して文字型に変換するには、
DBMS_LOB.SUBSTR を使用します。
構文
- (構文)
- DBMS_LOB.SUBSTR(<CLOB型値(列名)> ,<取得文字数>, <開始位置>)
<取得文字数>と <開始位置> はバイト数ではなく文字数です。
サンプル
以下は、TESTTBL.COL1列がCLOB型で「あいうえおかきくけこ」という値がセットされている場合です。
例)最大4000文字分を取得する
- SQL*Plus
- SQL> select dbms_lob.substr(col1 ,4000, 1) from testtbl; DBMS_LOB.SUBSTR(COL1,4000,1) -------------------------------------- あいうえおかきくけこ
例)2文字目から5文字分を取得する
- SQL*Plus
- SQL> select dbms_lob.substr(col1 ,5, 2) from testtbl; DBMS_LOB.SUBSTR(COL1,5,2) -------------------------------------- いうえおか
備考
- DBMS_LOB.SUBSTRで指定するサイズはバイト数ではなく文字数なので、全角文字を扱う場合は桁あふれにご注意ください。
- 単にCLOB型を文字列に変換したいだけの場合はTO_CHAR関数が使えます。