アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual C#でデータベースにある指定した文字を含むデータを検索する場合
cmd.CommandText = "SELECT * FROM [dbo].[TEXT]" +
"WHERE Text Like N'% " + textBox2.Text + "%'";
と書き「貝」と入力すると貝と書いてある文字列を検索できますが
複数の文字「貝␣海␣青い␣・・・」をOR検索する書き方がわからないので教えてください。

A 回答 (3件)

No.2です。



やっぱ目的通り動かなかったのでしょうか?
    • good
    • 0
この回答へのお礼

実行したら目的通り上手く動きました。
教えてくれてありがとうございます。

お礼日時:2019/10/18 07:01

No.1です。



取り敢えずOR検索について一例です。

string[] str_1 = textBox2.Text.Split(' '); //空白スペースが全角の場合。半角なら Split() でOK。
List<string> str_or = new List<string>();

foreach (string st in str_1)
{
str_or.Add("Text Like N'%" + st + "%' ");
}

MessageBox.Show("WHERE " + String.Join(" OR ",str_or.Select(x => x.ToString()).ToArray()) + " ;");

-------
実際のコードとは

string[] str_1 = textBox2.Text.Split(' '); //空白スペースが全角の場合。半角なら Split() でOK。
List<string> str_or = new List<string>();

foreach (string st in str_1)
{
str_or.Add("Text Like N'%" + st + "%' ");
}

cmd.CommandText = "SELECT * FROM [dbo].[TEXT]" +
"WHERE " + String.Join(" OR ",str_or.Select(x => x.ToString()).ToArray()) + " ;"

こうなると思います。
使用している変数名がダブるようなら適宜修正をお願いします。

もう一つの方(AND)については上記を参考にTextBox名変更と " OR " の代わりに " AND " で行けるかと。
切り替えがボタンのクリックイベントなら変数名はイベント内での宣言であれば同じでも大丈夫じゃない?
データベースに対してどうなのかは未検証です。
あくまで文字列の扱いとしてだけで回答してます。
    • good
    • 0

ちーちゃんの袋でも気にはなりましたが。



>「貝」と入力すると

はテキストボックス2に入力するって事は理解できます。

>複数の文字「貝␣海␣青い␣・・・」を

とは、複数のテキストボックスにそれぞれの値を入れるのか、又はテキストボックス2だけに入れるのか(何個?)が不明確な感じで敬遠されてたのかなって感じました。
(私はそう感じて特に疑問として書き込みはしませんでしたし、特に『Nって何だっけ?』でしたからね。)
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
複数の文字はテキストボックス2だけに入れて検索したいです。

お礼日時:2019/10/16 13:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!