是否有一個方法來獲取基於CLOB字段的字節數的子字符串?DBMS_LOB.SUBSTR()拋出「字符串緩衝區太小」錯誤
select DBMS_LOB.SUBSTR(a.COMMENTS, 3998, 1)
FROM FOO;
我得到錯誤:
"ORA-06502: PL/SQL: numeric or value error: character string buffer too small"
。 問題出在特殊字符。每個新的特殊字符需要8個字節,所以當我將字符串限制減少到3992時,它就起作用了。
DBMS_LOB.SUBSTR(a.COMMENTS, 3992, 1) works.
爲了測試的目的,我放了許多特殊字符,並再次拋出相同的錯誤。
是否有任何方法找到基於字節數的字符串比字符數?
實際上,我們從表格中提取數據,需要在界面上顯示4000個字符的限制。所以,我們只想獲取前4000個字符。由於字符大小爲1個字節,我們可以容納4000個字節。所以,如果我們使用DBMS_LOB.CONVERTTOBLOB
,我們可能無法正確顯示提取的字符串。我們可以將它轉換回來嗎?
根據[文檔](http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_lob.htm#i999349 )你可以指定你正在使用的字符集... – Ben
@Jyotirup你有沒有想過這個? – n00b