Oracle 11gを使用していて、テキストの長さを調べようとしています。普段は使ってselect length(myvar) from tableいますが、できません。
クエリしたいテーブルには、BLOB文字や写真を保存する列があります。BLOB自分の列の文字数を知りたいのですが。
BLOBを使用してcharに変換しようとしましたUTL_RAW.CAST_TO_VARCHAR2(myblob) from tableが、この関数が正しく機能していないか、間違いを犯している可能性があります。
例:私BLOBは単語Sectionを持っています。これを16進形式のデータベースで見ると、が表示されますS.e.c.t.i.o.n.。なぜそれが各文字の間にそれらのポイントを持っているのか分かりません。次に、このクエリを使用しました。
select UTL_RAW.CAST_TO_VARCHAR2(myblob)
from table
このクエリの結果は'S'、私の持っている完全な単語ではないため、このクエリを実行すると次のようBLOBになります。
select length(UTL_RAW.CAST_TO_VARCHAR2(myblob))
from table
結果は18ですが、単語のSections文字数は18文字ではありません。
私はをに変換しようとしていBLOBましたが、保存できるテキストの長さが制限を超えているため、VARCHAR私の最善の選択はだと思います。私はこのクエリを実行してそれを実行しようとしました(これが正しいかどうかはわかりませんが、インターネットで見つけたものです):CLOBVARCHAR
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(myblob, 32767, 1))
from table
このクエリはまたを返します'S'