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



有没有办法找出Oracle SQL查询中特定字段值(可能超过也可能不超过4000个字符)使用的字节数?

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

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

由于我还没有收到令人满意的答案,我目前正在使用dbms_lob.getlength()来获取字符数,然后乘以 2。这是基于此处关于AL32UTF8字符集的评论:

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

几乎所有字符都需要 2 字节的存储空间,其中只有少数 需要 4 字节存储空间的特殊字符。

尚未验证这有多真实,但该人听起来好像他们知道他们在说什么,所以我目前将其用作"最佳猜测"。

相关内容

最新更新