有没有办法找出Oracle SQL查询中特定字段值(可能长于4000个字符)使用的字节数?
dbms_lob.getLength()
返回的字符数不是字节,我不能只进行直接乘法,因为这个字符集中每个字符有一个可变的字节数。简单地想知道如何使用dbms_lob.converttoblob()
,但这似乎需要PL / SQL,我需要在一个查询中直接执行此操作。
使用Oracle函数LENGTHB()
来获得此结果。有一种方法可以通过使用DBMS_LOB.CONVERTTOBLOB
将CLOB转换为BLOB并使用DBMS_LOB.GETLENGTH()
。这将返回没有字节。
由于我还没有收到满意的答案,我现在正在使用dbms_lob.getlength()
获取字符数,然后乘以2.这是基于这里关于AL32UTF8字符集的评论:
https://forums.oracle.com/forums/thread.jspa?threadID=2133623
几乎所有字符都需要2个字节的存储空间,少数特殊字符需要4个字节的存储空间。
还没有证实这是多么真实,但这个人听起来就像他们知道他们在谈论什么,所以我现在正在使用它作为“最佳猜测”。