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

问题描述 投票:4回答:2

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

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

sql oracle byte clob utf
2个回答
1
投票

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


1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.