最近開發中遇到個問題,在開發自身環境下是沒問題的,但是在測試庫中報錯:java.lang.ClassCastException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB cannot be cast to java.lang.String,經過定位是由於某個字段的sql查詢語句不對,但是在開發庫中是沒問題的,那么自然就會想到是數據庫的差異了,利用SELECT * FROM v$version;在開發和測試庫分別查詢后發現,開發庫是10g而測試庫是11g,經查得知,原來是因為,在10.2.0.4.0(不包括)之后的WMSYS.WM_CONCAT查詢出來的是CLOB類型的,因此需要進行to_char再進行distinct,order by,union等等其他操作,或者是換個方法:concatstr()和WM_CONCAT()方法是一樣的效果。
以下列出查詢例子以供理解
SELECT replace(concatstr(t.c_membercode||':'||t.c_membername),',',';') FROM tothermember T;
SELECT replace(wm_concat(t.c_membercode||':'||t.c_membername),',',';') FROM tothermember T;
SELECT replace(to_char(wm_concat(t.c_membercode||':'||t.c_membername)),',',';') FROM tothermember T;
簡單介紹一下:wm_concat函數:簡單理解就是:將列轉為行。此處要做的一個功能就是:查表做數據字典。