4

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

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

4

2 回答 2

1

使用 Oracle 函数LENGTHB()得到这个结果。有一种方法可以通过 usingDBMS_LOB.CONVERTTOBLOB和 use将 CLOB 转换为 BLOB DBMS_LOB.GETLENGTH()。这将不返回字节数。

于 2012-11-27T16:17:39.653 回答
1

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

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

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

还没有证实这是多么真实,但这个人听起来好像他们知道他们在说什么,所以目前正在使用它作为“最佳猜测”。

于 2012-11-27T17:29:24.603 回答