最近在作數據庫從sybase到oracle的遷移工做,sybase數據庫表bcp導出後,經過sqlldr導入到oracle數據庫,而後oracle數據庫經過spool按照sybase數據庫bcp的格式導出,進行比對,看兩邊的文件是否同樣。可是出現了一個問題,致使兩邊的文件不同,什麼問題了,由於某些表中的某些字段中存在換行符,在sybase中bcp導出時,爲一行,oracle數據庫spool導出爲兩行,致使最後用comm -3比較的時候兩邊文件不同。那麼查詢字段中的值是否有換行符呢?sql
--sybase數據庫中 ,char(10)表示換行,char(13)表示回車
select * from tsysparameter where c_valuebound like '%'||char(10)||'%' ; 或者: select * from tsysparameter where charindex(char(10),c_valuebound) > 0; 注意:charindex是前面字符在後面字符是否存在,存在大於0;
也就是說在sybase數據庫中用char(10)表示換行符,用char(13)表示回車。
--oracle數據庫中 ,chr(10)表示換行,chr(13)表示回車
select * from tsysparameter where c_valuebound like '%'||chr(10)||'%' ; 或者: select * from tsysparameter where instr(c_valuebound,chr(10))>0;
也就是說在oracle數據庫中用chr(10)表示換行符,用chr(13)表示回車。數據庫
-sybase update tsysparamester set c_valuebound=str_replace(c_valuebound,char(10),'') where charindex(char(10),c_valuebound) >0; --oracle
update tsysparamester set c_valuebound=replace(c_valuebound,chr(10),'') where instr(c_valuebound,chr(10)) >0;