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

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

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

Re[12]: Oracleで複数のあいまい検索をする場合


(過去ログ 41 を表示中)

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

■21549 / inTopicNo.1)  Oracleで複数のあいまい検索をする場合
  
□投稿者/ まいか (11回)-(2008/07/04(Fri) 11:29:17)

分類:[その他の言語] 

お世話になります
WinXP,Oracle10g,SI Object Browser,Access2000です
複数のあいまい検索をする時に、検索する物が名前、フリガナ、電話番号、住所で
対応するテキストボックスはtxt_名前,txt_フリガナ,txt_電話番号,txt_住所です
常に全部のテキストボックスに入れて検索をする場合は無くて、名前と住所は入れてその他は入れないなんて事はあります
そういう場合も含めて、あいまい検索をしたいのですがどうすれば良いのでしょうか?

パラメータ
In_NAME                     In      Varchar2 Default( Null ),
In_TEL			In	Varchar2	Default( Null ),	
In_HURIGANA		In	Varchar2	Default( Null ),	
In_ADDRESS		In	Varchar2	Default( Null ),	

Where句
Where
(
	In_NAME Is Null
Or	NAME Like In_NAME
)
And
(
	In_TEL Is Null
Or	TEL Like In_TEL
)
And
(
         In_HURIGANA Is Null
Or	HURIGANA Like In_HURIGANA
)
And
(
	In_ADDRESS Is Null
Or	ADDRESS Like In_ADDRESS
);
上記の様にしているのですが、エラーが出てしまって検索出来ません
どうすればいいのでしょうか、よろしくお願いします

引用返信 編集キー/
■21552 / inTopicNo.2)  Re[1]: Oracleで複数のあいまい検索をする場合
□投稿者/ いしだ (149回)-(2008/07/04(Fri) 11:56:33)
> In_NAME Is Null
NAME Is Null
じゃないですか?その他も同様に。
引用返信 編集キー/
■21555 / inTopicNo.3)  Re[2]: Oracleで複数のあいまい検索をする場合
□投稿者/ みきぬ (8回)-(2008/07/04(Fri) 12:03:19)
No21552 (いしだ さん) に返信
>> In_NAME Is Null
> NAME Is Null
> じゃないですか?その他も同様に。
いや、そこは
「入力された値 In_NAME が Null だったら結果が真になるので、
 NAME に関わらず必ず検索されてほしい」という意図があるのだと思います。
引用返信 編集キー/
■21556 / inTopicNo.4)  Re[3]: Oracleで複数のあいまい検索をする場合
□投稿者/ いしだ (152回)-(2008/07/04(Fri) 12:07:02)
> いや、そこは
> 「入力された値 In_NAME が Null だったら結果が真になるので、
>  NAME に関わらず必ず検索されてほしい」という意図があるのだと思います。
いや、そうでした。ぼけてました。失礼。
引用返信 編集キー/
■21557 / inTopicNo.5)  Re[4]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (12回)-(2008/07/04(Fri) 12:28:39)
いしださん、みきぬさん、ありがとうございます
みきぬさんの仰る通り、In_NAMEがNullで入ってきた場合は全て
NullではなかったらIn_NAMEに従って検索をかけたいと思っています
しかし、現状では式の型が正しくありませんと出てしまっています
引用返信 編集キー/
■21558 / inTopicNo.6)  Re[4]: Oracleで複数のあいまい検索をする場合
□投稿者/ やじゅ (474回)-(2008/07/04(Fri) 12:31:24)
やじゅ さんの Web サイト
Like In_NAME

Like '%' || In_NAME '%'
他同様

引用返信 編集キー/
■21560 / inTopicNo.7)  Re[5]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (13回)-(2008/07/04(Fri) 12:57:44)
やじゅさん、ありがとうございます
In_NAMEが「%あ」や「あ%」や「%あ%」と入ってくる場合は
Like || In_NAMEでも良いのでしょうか
引用返信 編集キー/
■21561 / inTopicNo.8)  Re[6]: Oracleで複数のあいまい検索をする場合
□投稿者/ はつね (805回)-(2008/07/04(Fri) 13:05:19)
はつね さんの Web サイト
No21560 (まいか さん) に返信
> Like || In_NAMEでも良いのでしょうか

SI Object Browserで
SELECT * FROM hogehoge WHERE (name Is NULL OR name LIKE :NAME)
で実行してバインド変数NAMEの値として あ% とかいれれば、未入力と「あ」から始まるのSELECT結果がとれますね。

ご質問のSQL文は、どこに書いているのでしょうか?
Accessの文字列変数の中?
それともOracleのストアドプロシージャ?
それによって回答なども変わってくると思います。

引用返信 編集キー/
■21562 / inTopicNo.9)  Re[7]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (14回)-(2008/07/04(Fri) 13:09:19)
はつねさん、ありがとうございます
Oracle内のストアドプロシージャです

引用返信 編集キー/
■21564 / inTopicNo.10)  Re[6]: Oracleで複数のあいまい検索をする場合
□投稿者/ 魔界の仮面弁士 (776回)-(2008/07/04(Fri) 13:22:34)
No21560 (まいか さん) に返信
> In_NAMEが「%あ」や「あ%」や「%あ%」と入ってくる場合は

ここでいう「%」は、ワイルドカードの意味でしょうか。それともデータの一部?

たとえば、In_NAME に「100%」というデータを入れた場合に、後方一致で
「『Bio_100%』には一致させるが、『SPACY100』には一致させない」という条件にするなら、

WHERE NAME LIKE '%' || IN_DATA

ではなく、

WHERE NAME LIKE '%' || REPLACE(REPLACE(IN_DATA, '\', '\\'), '%', '\%') ESCAPE '\'

になるかと思います、Oracle の場合は。
引用返信 編集キー/
■21566 / inTopicNo.11)  Re[8]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (15回)-(2008/07/04(Fri) 13:27:42)
魔界の仮面弁士さん、ありがとうございます
「%」はワイルドカードと取ってください
あ%、で前方一致。%あ、で後方一致、%あ%、で一部一致と取りたいです

引用返信 編集キー/
■21568 / inTopicNo.12)  Re[9]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (16回)-(2008/07/04(Fri) 13:42:51)
変数を使わずにやった場合
Where NAME Like 'あ%' や Where NAME Like '%あ' や Where NAME Like '%あ%'
で取れる物をNullが入る場合も考えて変数(この場合はパラメータ?)In_NAMEで代用したいと思っています
以下のサイトを参考にしました
http://www.t3.rim.or.jp/~buchi/sqlidx.html#sql33
引用返信 編集キー/
■21588 / inTopicNo.13)  Re[10]: Oracleで複数のあいまい検索をする場合
□投稿者/ 小春 (57回)-(2008/07/04(Fri) 19:00:08)
No21568 (まいか さん) に返信
> 変数を使わずにやった場合
> Where NAME Like 'あ%' や Where NAME Like '%あ' や Where NAME Like '%あ%'
> で取れる物をNullが入る場合も考えて変数(この場合はパラメータ?)In_NAMEで代用したいと思っています
> 以下のサイトを参考にしました
> http://www.t3.rim.or.jp/~buchi/sqlidx.html#sql33

SQLインジェクションの危険性もありますので、
ストアドであれば、この場合は動的SQL+バインドが望ましいかと思います。
引用返信 編集キー/
■21659 / inTopicNo.14)  Re[11]: Oracleで複数のあいまい検索をする場合
□投稿者/ まいか (17回)-(2008/07/07(Mon) 14:32:31)
小春さん、ありがとうございます

現在、動的SQLに書き換えて作成しています
副問合せで、文字列で検索をかけている箇所がありまして
属性名 = 'サポート有'
としているのですが、動的SQLで上の様に固定の文字列を検索する場合はどうすれば良いのでしょうか?

よろしくお願いします
引用返信 編集キー/
■21666 / inTopicNo.15)  Re[12]: Oracleで複数のあいまい検索をする場合
□投稿者/ 小春 (59回)-(2008/07/07(Mon) 15:41:17)
2008/07/07(Mon) 15:42:28 編集(投稿者)
No21659 (まいか さん) に返信
> 現在、動的SQLに書き換えて作成しています
> 副問合せで、文字列で検索をかけている箇所がありまして
> 属性名 = 'サポート有'
> としているのですが、動的SQLで上の様に固定の文字列を検索する場合はどうすれば良いのでしょうか?

バインド変数で実装方法が分からないということでよかったですか?
であれば、
「oracle 動的SQL」でググったところ、
--http://www.shift-the-oracle.com/plsql/native-dynamic-sql.html
のサイトが参考になるかと思います。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -