有没有办法找出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 字节存储空间的特殊字符。
尚未验证这有多真实,但该人听起来好像他们知道他们在说什么,所以我目前将其用作"最佳猜测"。