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
私の最善の選択はだと思います。私はこのクエリを実行してそれを実行しようとしました(これが正しいかどうかはわかりませんが、インターネットで見つけたものです):CLOB
VARCHAR
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(myblob, 32767, 1))
from table
このクエリはまたを返します'S'