多字节字符给我带来了很大的痛苦。
对这个问题有什么建议吗?
我有一个可能包含一些多字节字符的 CLOB 字段,我需要在 SQL 中选择并将该字段转换为下游进程的字符串,目前我正在使用:
SELECT DBMS_LOB.SUBSTR( description, 4000, 1 ) FROM table
但是上面命令中的 4000 是字符长度,而不是字节。所以我不得不更改为 3000 来处理任何可能潜入数据中的多字节字符,否则会发生缓冲区大小错误。
问题在于不包含多字节字符的记录,它可能会不必要地截断比它需要的更多的数据。(4000 是字符串限制,我们可以/必须忍受它。)
有没有办法做一些相当于:
SELECT DBMS_LOB.SUBSTR( description, 4000bytes, 1 ) FROM table
这样我就可以得到尽可能多的数据。
注意:我不能创建临时表/视图,不能使用 PL/SQL,只能使用 SQL SELECT...