• ベストアンサー

改行レコードの検索方法

改行コードがあるカラムに入っているかどうかを検索したいのですが、SQL文が分かりません。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 「あるカラム」に改行が含まれるレコードの数を求めるSQL文は、以下のようになります。 select count(*) from (テーブル名) where nvl( instr((カラム名), chr(10)), 0 ) > 0;

maryoha
質問者

お礼

教えていただきありがとうございました。 ばっちり検索できました。 ちなみにselect count(*) from (テーブル名) where instr((カラム名), chr(10))> 0; でも検索できたのですが nvl( instr((カラム名), chr(10)), 0 ) > 0; のように記述する理由を教えていただけるとありがたいです。

その他の回答 (3)

回答No.4

#2です。 改行コードが存在するかどうかの比較を行うカラムがNULLの場合、 INSTR関数を使うと戻り値がNULLになります。 そのため、NVL関数を使ってINSTR関数の戻り値がNULLになった場合でも 明示的に左辺が0になるようにしました。 NULLのカラムには改行コードが存在するわけがないので、質問者様の用途であれば NVL関数を使わなくても正しく検索されるのです。 逆に、改行コードが含まれないカラムを検索する場合でNULLのカラムもカウントする必要があれば、 下の例のようにNVL関数が必要になります。

maryoha
質問者

お礼

なるほど。。。 そこまで考えていただき ありがとうございました。 勉強になりました。 また、何かありましたらよろしくお願いします。 今回はありがとうございました。

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.3

nvlは[カラム]がNULLだった場合の対応ですね [カラム]にCREATE時にNOT NULL属性がかかっていれば不要ですね

  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.1

Windowsであればchr(13)+chr(10)、Unixであればchr(10)でどうですか?

maryoha
質問者

お礼

ありがとうございます。環境はwindowsで改行はchr(13)でした。

関連するQ&A

専門家に質問してみよう