我正在使用 Oracle 11g,并试图找出文本的长度。我通常使用select length(myvar) from table
,但我不能这样做。
我要查询的表有一个BLOB
保存字符或照片的列。我想知道我的BLOB
专栏有多少个字符。
我尝试使用 将 myBLOB
转换为 char UTL_RAW.CAST_TO_VARCHAR2(myblob) from table
,但此功能无法正常工作,或者我犯了一个错误。
例如:我BLOB
有这个词Section
,当我在数据库中以十六进制形式看到这个时,我看到了S.e.c.t.i.o.n.
。我不知道为什么每个字母之间都有这些点。然后我使用了这个查询:
select UTL_RAW.CAST_TO_VARCHAR2(myblob)
from table
此查询的结果是'S'
,它不是 myBLOB
拥有的完整单词,当我进行此查询时:
select length(UTL_RAW.CAST_TO_VARCHAR2(myblob))
from table
结果是18
,但这个词Sections
没有 18 个字符。
我试图将 转换BLOB
为 a VARCHAR
,尽管我认为我最好的选择是 aCLOB
因为它可以保存的文本长度超过了限制VARCHAR
。我试图通过进行此查询来做到这一点(我不确定这是否正确,但这是我在互联网上找到的):
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(myblob, 32767, 1))
from table
此查询还返回'S'