我正在使用oracle 11g,并试图找出文本的长度。我通常会使用表中的select长度(myvar),但我不能那样做。将blob转换为clob
我想要查询的表格有一个保存字符或照片的BLOB列。我想知道有我的BLOB列的字符数。
我试图从表中使用UTL_RAW.CAST_TO_VARCHAR2(myblob)将我的BLOB转换为char,但是这个函数不能正常工作或者我犯了一个错误。
例如: 我的BLOB有单词Section,当我以十六进制的形式在数据库中看到这个时,我看到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和单词部分没有18个字符。
我试图将blob转换为varchar,尽管我认为我最好的选择是clob,因为它可以保存的文本的长度超过了varchar的限制。我试图做的是通过使这个查询(我不知道这是否是正确的,但是我在互联网上找到)
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(myblob, 32767, 1))
from table
此查询还返回“S”
我希望你能帮助我解决这个问题。先进的感谢
DBMS_LOB.GET_LENGTH()可以帮助 – cagcowboy
欢迎变长字符编码的精彩世界 – climbage
@cagcowboy我使用select DBMS_LOB.GET_LENGTH尝试(myblob)从表中,但我得到一个错误。 ORA-00904无效标识符。 – user1739469