oracle 11g
CLOBの項目のバイト数を取得する
LENGTHB関数を使うと
sample.SQL
SELECT
LENGTHB(CLOB_COLUMN)
FROM
TABLE
ORA-22998: マルチバイトのキャラクタ・セットのCLOBまたはNCLOBはサポートされていません
CLOB型に対するLENGTHBはサポートしていないとのこと
CHAR型に変換してからLENGTHBを使うと
sample.SQL
SELECT
LENGTHB(TO_CHAR(CLOB_COLUMN))
FROM
TABLE
ORA-64203: 宛先バッファは、キャラクタ・セット変換後のCLOBデータを保持するには小さすぎます。
CHARに変換しようとしたが、LOBサイズがCHAR型のバッファ制限を超えているとのこと
ならばSUBSTR関数で区切って計算してしまえばいい
sample.SQL
SELECT
LENGTHB(TO_CHAR(SUBSTR(CLOB_COLUMN,1,1000))) +
LENGTHB(TO_CHAR(SUBSTR(CLOB_COLUMN,1001,1000))) +
...
FROM
TABLE
これでうまくいった
なおCLOBの文字数はこちらで取得できる
sample.SQL
SELECT
DBMS_LOB.GETLENGTH(CLOB_COLUMN)
FROM
TABLE
残念ながら
DBMS_LOB.GETLENGTHBはサポートされていない
あと文字数*2でいいじゃんっていう記事を見つけたけど
マルチバイト・キャラクタセット的に間違いだと思う
https://www.shift-the-oracle.com/config/multibyte-characterset.html