如何使用Oracle中的AL32UTF字符集确定CLOB的长度(以字节为单位)?

时间:2012-11-27 15:53:39

标签: sql oracle byte clob utf

是否有办法找出Oracle SQL查询中特定字段值(可能长于4000个字符)所使用的字节数?

dbms_lob.getLength()返回的字符数不是字节,我不能只进行直接乘法,因为此字符集中每个字符的字节数可变。简单地想知道如何使用dbms_lob.converttoblob(),但这似乎需要PL / SQL,我需要在一个查询中直接执行此操作。

2 个答案:

答案 0 :(得分:1)

使用Oracle函数LENGTHB()获取此结果。 有一种方法可以使用DBMS_LOB.CONVERTTOBLOB并使用DBMS_LOB.GETLENGTH()将CLOB转换为BLOB。这将返回no字节。

答案 1 :(得分:1)

由于我还没有收到满意的答案,我现在正在使用dbms_lob.getlength()来获取字符数,然后乘以2.这是基于这里有关AL32UTF8字符集的注释:

https://forums.oracle.com/forums/thread.jspa?threadID=2133623

  

几乎所有字符都需要2个字节的存储空间   需要4个字节存储空间的特殊字符。

没有证实这是多么真实,但是这个人听起来就像他们知道他们在谈论什么,所以我现在正在使用它作为“最佳猜测”。