Oracle REPLACE() 関数がキャリッジリターンとラインフィードを処理しない
あるテーブルの varchar2(100)
カラムには、改行文字が含まれていることがあります。SQLクエリでこれらの文字を削除したい。私たちは、以下のものを使用しています。
REPLACE( col_name, CHR(10) )
を使っていますが、 'CHR(10)' をより一般的な 'letter' に置き換えると、REPLACE 関数は別の方法で動作することが証明されます。また、次のこともわかりました。
REPLACE( col_name, CHR(10), '_' )
は改行の 位置 を見つけますが、アンダースコアを置き換えるのではなく、その後に 挿入 します。
Oracle8iで動作しています。アップグレードはオプションではありません。
21
6
別の方法は、翻訳を使用することです。
3番目のパラメーターがnullの場合、TRANSLATEは正しく機能しないため、「x」はnullに変換したくない任意の文字です。
嗚呼、ケイドは金になる。
TOADのアーティファクトは
rrn
を2つのプレースホルダー 'blob' 文字として印刷するが、1つのrr
も2つのプレースホルダーとして印刷される。解決への第1歩は、.NET Frameworkを使用することです。を使うことですが、私はもう少し堅牢な.
これはどのような順序でも違反文字を捕らえることができます。Cadeに感謝します。
M.
改行が「CHR(13) + CHR(10)
」 でないことは確かですか?その場合、「CHR(13) + '_'
」となり、まだ改行のように見えるかもしれません。REPLACE(col_name, CHR(13) + CHR(10), '')` を試してみてください。
データベース内のデータがHTMLフォームのTextAreaコントロールからPOSTされた場合、ブラウザによって異なる改行文字が使用されます。
FirefoxはCHR(10)のみで行を区切ります。
Internet ExplorerはCHR(13)とCHR(10)で行を区切ります。
Apple (OSX以前) はCHR(13)のみで行を区切ります。
というようなものが必要になるかもしれません。
メモを落としたかっただけです。 独自の心を持つテキスト4000フィールドのフォーマットに問題があり、テキストはレポートでランダムにラップ(またはラップ)されているように見えました。 上記の置換chr(10)を使用して列を更新したとき。 私のレポートは、ようやく好きなようにフォーマットされました。 多くのThanx。!
改行文字が「CRLF」の場合、それは「CHR(13)」の後に「CHR(10)」が続くことを意味します。
REPLACE(入力、CHR(10)、 '_')
の場合、CHR(13)
に変わり、その後にアンダースコアが続きます。CR
自体は改行文字と同じようにレンダリングできるため、改行後にアンダースコアが挿入されたかのように表示されますが、実際には改行の半分しか置き換えられていません。REPLACE(REPLACE(input、CHR(13))、CHR(10))
を使用して、すべてのCR
とLF
を置き換えます。