- ベストアンサー
改行レコードの検索方法
改行コードがあるカラムに入っているかどうかを検索したいのですが、SQL文が分かりません。どなたか教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 「あるカラム」に改行が含まれるレコードの数を求めるSQL文は、以下のようになります。 select count(*) from (テーブル名) where nvl( instr((カラム名), chr(10)), 0 ) > 0;
その他の回答 (3)
- cool_koo1976
- ベストアンサー率50% (40/79)
回答No.4
#2です。 改行コードが存在するかどうかの比較を行うカラムがNULLの場合、 INSTR関数を使うと戻り値がNULLになります。 そのため、NVL関数を使ってINSTR関数の戻り値がNULLになった場合でも 明示的に左辺が0になるようにしました。 NULLのカラムには改行コードが存在するわけがないので、質問者様の用途であれば NVL関数を使わなくても正しく検索されるのです。 逆に、改行コードが含まれないカラムを検索する場合でNULLのカラムもカウントする必要があれば、 下の例のようにNVL関数が必要になります。
質問者
お礼
なるほど。。。 そこまで考えていただき ありがとうございました。 勉強になりました。 また、何かありましたらよろしくお願いします。 今回はありがとうございました。
- 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)でどうですか?
質問者
お礼
ありがとうございます。環境はwindowsで改行はchr(13)でした。
お礼
教えていただきありがとうございました。 ばっちり検索できました。 ちなみにselect count(*) from (テーブル名) where instr((カラム名), chr(10))> 0; でも検索できたのですが nvl( instr((カラム名), chr(10)), 0 ) > 0; のように記述する理由を教えていただけるとありがたいです。