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

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

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

Re[5]: 回答に非ず


(過去ログ 16 を表示中)

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

■5828 / inTopicNo.1)  dataviewのrowfilterからlink使用時
  
□投稿者/ あわわ (1回)-(2007/07/24(Tue) 14:15:12)

分類:[ASP.NET (C#)] 

ご質問お願い致します。
開発環境:XP ASP.NET(C#) SQL2000

dataviewのrowfilterからlink文を使用してのご質問なんですが、
linkで検索する文字列をユーザからテキストボックス入力で受け取り
検索をかけ、datagridへ表示といった形を取っています。
ここで問題ですが
「あいうおえ」での検索ならば成功します。
「あいう*えお」などの特殊文字が入った場合エラーになります。
エラー内容:Like 演算子のエラー : 文字列パターン '%あいう*えお%' が無効です。
となります。
検索時に「あいう[*]えお」ならエラーは出ず検索が行われます。
* % などの文字を見つけていちいち[]で囲む様なコードを書かなければいけないんでしょうか?
一番ベストな方法などありましたら教えていただけませんでしょうか。
お願い致します。
引用返信 編集キー/
■5829 / inTopicNo.2)  回答に非ず
□投稿者/ 魔界の仮面弁士 (360回)-(2007/07/24(Tue) 14:23:14)
2007/07/24(Tue) 14:24:47 編集(投稿者)

No5828 (あわわ さん) に返信
> 検索時に「あいう[*]えお」ならエラーは出ず検索が行われます。
> * % などの文字を見つけて
そのほか、[ や ] もエスケープが必要ですし、 ' は、別のエスケープが必要です。

> いちいち[]で囲む様なコードを書かなければいけないんでしょうか?
いちいち囲む方法しか知りません…。(すみません)
引用返信 編集キー/
■5830 / inTopicNo.3)  Re[2]: 回答に非ず
□投稿者/ あわわ (2回)-(2007/07/24(Tue) 14:31:19)
返答ありがとう御座います。
No5829 (魔界の仮面弁士 さん) に返信
> 2007/07/24(Tue) 14:24:47 編集(投稿者)
>
> ■No5828 (あわわ さん) に返信
>>検索時に「あいう[*]えお」ならエラーは出ず検索が行われます。
>>* % などの文字を見つけて
> そのほか、[ や ] もエスケープが必要ですし、 ' は、別のエスケープが必要です。
「や」もエスケープが必要とはどういったことでしょうか?
>
>>いちいち[]で囲む様なコードを書かなければいけないんでしょうか?
> いちいち囲む方法しか知りません…。(すみません)
そうですか、もう少し、返答を待ってないようでしたらその方法で頑張ってみます。
引用返信 編集キー/
■5832 / inTopicNo.4)  Re[3]: 回答に非ず
□投稿者/ まさる (11回)-(2007/07/24(Tue) 14:34:08)
>>そのほか、[ や ] もエスケープが必要ですし、 ' は、別のエスケープが必要です。
> 「や」もエスケープが必要とはどういったことでしょうか?
「や」ではなくて、"["や"]"の大括弧のことかと。

#本題はわからないです。ごめんなさい。
引用返信 編集キー/
■5833 / inTopicNo.5)  Re[3]: 回答に非ず
□投稿者/ 魔界の仮面弁士 (361回)-(2007/07/24(Tue) 14:34:42)
No5830 (あわわ さん) に返信
> >>検索時に「あいう[*]えお」ならエラーは出ず検索が行われます。
> >>* % などの文字を見つけて
>>そのほか、[ や ] もエスケープが必要ですし、 ' は、別のエスケープが必要です。
> 「や」もエスケープが必要とはどういったことでしょうか?

違います。『「』や『」』ではなく、『[』や『]』です。

"あいう[えお" を検索する場合は、"field LIKE 'あいう[[]えお'" となりますし、
"あいう'えお" を検索する場合は、"field LIKE 'あいう''えお'" となるということです。
引用返信 編集キー/
■5835 / inTopicNo.6)  Re[4]: 回答に非ず
□投稿者/ あわわ (4回)-(2007/07/24(Tue) 14:57:48)
No5833 (魔界の仮面弁士 さん) に返信
> ■No5830 (あわわ さん) に返信
>>>>検索時に「あいう[*]えお」ならエラーは出ず検索が行われます。
>>>>* % などの文字を見つけて
> >>そのほか、[ や ] もエスケープが必要ですし、 ' は、別のエスケープが必要です。
>>「や」もエスケープが必要とはどういったことでしょうか?
>
> 違います。『「』や『」』ではなく、『[』や『]』です。
>
> "あいう[えお" を検索する場合は、"field LIKE 'あいう[[]えお'" となりますし、
> "あいう'えお" を検索する場合は、"field LIKE 'あいう''えお'" となるということです。
なるほど、ありがとう御座います。
なぜこんなにエスケープが必要なんですかね?
そもそもデータベースから検索してdatagridに表示させる場合rowfilterを使うって事が間違っているんですか?
なにか別なものを使ったりするんでしょうか?
引用返信 編集キー/
■5839 / inTopicNo.7)  エスケープの理由
□投稿者/ 魔界の仮面弁士 (362回)-(2007/07/24(Tue) 16:15:34)
No5835 (あわわ さん) に返信
> なぜこんなにエスケープが必要なんですかね?
何故も何も、エスケープ処理は RowFilter に限った話ではなく、
SQL で LIKE 検索するときにだって必要となりますよね。

> そもそもデータベースから検索してdatagridに表示させる場合rowfilterを使うって事が間違っているんですか?
どのように使うか、要件次第でしょう。データ量や頻度によって、DataView.RowFilter を
使った方が良い場合と、DB に再問い合わせしたした方が良い場合とあるでしょうし。
引用返信 編集キー/
■5842 / inTopicNo.8)  Re[4]: 回答に非ず
□投稿者/ あわわ (6回)-(2007/07/24(Tue) 16:27:56)
やはり受け取った値から*%'など探し、適した形での検索に
と、コードを書く必要があるんでしょうか?????
引用返信 編集キー/
■5885 / inTopicNo.9)  Re[5]: 回答に非ず
□投稿者/ あわわ (7回)-(2007/07/25(Wed) 12:55:15)

ああ*あ なら ああ[*]あ に変換するようなメソッドはやはりないですか?_
探しましたがみつかりませんでした、
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -