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