あるテーブルの varchar2(100)
カラムには、改行文字が含まれていることがあります。SQLクエリでこれらの文字を削除したい。私たちは、以下のものを使用しています。
REPLACE( col_name, CHR(10) )
を使っていますが、 'CHR(10)' をより一般的な 'letter' に置き換えると、REPLACE 関数は別の方法で動作することが証明されます。また、次のこともわかりました。
REPLACE( col_name, CHR(10), '_' )
は改行の 位置 を見つけますが、アンダースコアを置き換えるのではなく、その後に 挿入 します。
Oracle8iで動作しています。アップグレードはオプションではありません。
嗚呼、ケイドは金になる。
TOADのアーティファクトは rrn
を2つのプレースホルダー 'blob' 文字として印刷するが、1つの rr
も2つのプレースホルダーとして印刷される。解決への第1歩は、.NET Frameworkを使用することです。
REPLACE( col_name, CHR(13) || CHR(10) )
を使うことですが、私はもう少し堅牢な.
REPLACE(REPLACE( col_name, CHR(10) ), CHR(13) )
これはどのような順序でも違反文字を捕らえることができます。Cadeに感謝します。
M.
データベース内のデータがHTMLフォームのTextAreaコントロールからPOSTされた場合、ブラウザによって異なる改行文字が使用されます。
FirefoxはCHR(10)のみで行を区切ります。
Internet ExplorerはCHR(13)とCHR(10)で行を区切ります。
Apple (OSX以前) はCHR(13)のみで行を区切ります。
というようなものが必要になるかもしれません。
set col_name = replace(replace(col_name, CHR(13), ''), CHR(10), '')
改行文字が「CRLF」の場合、それは「CHR(13)」の後に「CHR(10)」が続くことを意味します。 REPLACE(入力、CHR(10)、 '_')
の場合、 CHR(13)
に変わり、その後にアンダースコアが続きます。 CR
自体は改行文字と同じようにレンダリングできるため、改行後にアンダースコアが挿入されたかのように表示されますが、実際には改行の半分しか置き換えられていません。
REPLACE(REPLACE(input、CHR(13))、CHR(10))
を使用して、すべての CR
と LF
を置き換えます。