C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: OracleのWhereのLikeにCaseを


(過去ログ 24 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■10587 / inTopicNo.1)  OracleのWhereのLikeにCaseを使ういい方法
  
□投稿者/ 中博俊 (1205回)-(2007/11/21(Wed) 14:40:27)
中博俊 さんの Web サイト

分類:[データベース全般] 

中です。
Oracle10です。おしえてください。

変数でSelectするWhereがかわるSQL書いてます。
select data
from table
where data like
    case when :x is null then N'%'
        else :x end escape '\'

こんなSQLですが、:xがnullの場合には検索条件からはずしたいため、
where case :x is null then 1=1 else data like :x escape '\'
としたいのです。どうもだめっぽいです。
何かいい方法はないでしょうか?

like '%'になっていればデメリットはないような気もしますが、いまいち確信は持てません。
このSQLどんなもんでしょ?

引用返信 編集キー/
■10589 / inTopicNo.2)  Re[1]: OracleのWhereのLikeにCaseを
□投稿者/ いしだ (65回)-(2007/11/21(Wed) 15:15:41)
2007/11/21(Wed) 15:18:40 編集(投稿者)
2007/11/21(Wed) 15:17:03 編集(投稿者)

中さん、こんにちは。

> このSQLどんなもんでしょ?
これについてはわかりませんが、

where (data like :x or :x is null)

where data like nvl(:x, data)

のような方法等はどうでしょうか。
引用返信 編集キー/
■10590 / inTopicNo.3)  Re[2]: OracleのWhereのLikeにCaseを
□投稿者/ HiJun (77回)-(2007/11/21(Wed) 15:54:52)
中さん、こんにちは。
一つ確認になりますが、:X が NULLだったときの
SELECT文の結果ですが、レコードなしかそれとも全データ対象の
どちらを想定しておりますか?
これによってはSELECT文も変わってくるかと思います。


引用返信 編集キー/
■10591 / inTopicNo.4)  Re[3]: OracleのWhereのLikeにCaseを
□投稿者/ 中博俊 (1206回)-(2007/11/21(Wed) 16:01:28)
中博俊 さんの Web サイト
全部が対象ですね。
さっきの私の案ではパラメータがnullでnullデータの時に引っ張ってこれてませんでした。
where(data like :x or :x is null)は
where (data like :x escape n'\' or :x is null)としても通っているので、いけそうな感じですね。

引用返信 編集キー/
■10593 / inTopicNo.5)  Re[4]: OracleのWhereのLikeにCaseを
□投稿者/ HiJun (78回)-(2007/11/21(Wed) 17:02:37)
No10591 (中博俊 さん) に返信
ちょっと自信がないです(汗)が、
以下の感じでどうでしょうか。

select data from table
where
case when :x is null then 1=1
else data like :x escape n'\'
end ;


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -