Kami memiliki tabel dengan kolom varchar2(100)
, yang terkadang berisi carriage-return &; line-feeds. Kita ingin menghapus karakter-karakter tersebut dalam kueri SQL. Kami menggunakan:
REPLACE( col_name, CHR(10) )
yang tidak berpengaruh, namun mengganti 'CHR(10)' untuk karakter 'huruf' yang lebih konvensional membuktikan bahwa fungsi REPLACE bekerja sebaliknya. Kami juga menemukan bahwa
REPLACE( col_name, CHR(10), '_' )
menemukan lokasi dari baris baru, tetapi menyisipkan garis bawah setelahnya, daripada menggantinya.
Berjalan di Oracle8i. Upgrade bukanlah sebuah pilihan.
Ahah! Cade tepat sasaran.
Sebuah artefak di TOAD mencetak \r\n
sebagai dua placeholder 'blob' karakter, tetapi mencetak satu \r
juga sebagai dua placeholder. Langkah pertama menuju solusi adalah dengan menggunakan ...
REPLACE( col_name, CHR(13) || CHR(10) )
.. tetapi saya memilih untuk ... yang sedikit lebih kuat.
REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )
.. yang menangkap karakter yang menyinggung dalam urutan apapun. Terima kasih banyak kepada Cade.
M.
Jika data dalam database Anda diposting dari kontrol TextArea bentuk HTML, browser yang berbeda menggunakan karakter Baris Baru yang berbeda:
Firefox memisahkan baris dengan CHR(10) saja
Internet Explorer memisahkan baris dengan CHR(13) + CHR(10)
Apple (pra-OSX) memisahkan baris dengan CHR(13) saja
Jadi, Anda mungkin memerlukan sesuatu seperti:
set col_name = replace(replace(col_name, CHR(13), ''), CHR(10), '')