- PR -

SQL文にて配列を検索する方法

投稿者投稿内容
uniqque
常連さん
会議室デビュー日: 2005/03/18
投稿数: 43
投稿日時: 2005-06-03 15:17
>>きくちゃんさん
ご返答ありがとうございます。
>とりあえず「For ループ」について調べてみて下さい。
これはvb.netのForループでしょうか。
最初の処理で付け加えるのを忘れてましたが、
searchWord()配列には検索する文字列が入るのですが、
テキストボックスに検索したい文字列を入力して(一人目 二人目など)
空白を区切りにand検索する処理なんです。
なのでvb.net側でForループで一個ずつ調べるとしても意味がないんです。

117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-06-03 15:27
テキストボックスに「一人目 二人目 三人目」 と入力したら
searchWord(0) に"一人目"
searchWord(1) に"二人目" ...という感じですか?

きくちゃん氏の仰る通り、forループで配列要素を取り出してSQL文の文字列を
作ってOleDbCommandのコンストラクタに渡すってことで何も問題ないと思いますが...
_________________
# Future Is On Fire !
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-06-03 16:06
引用:

delichoさんの書き込み (2005-06-03 15:17) より:

テキストボックスに検索したい文字列を入力して(一人目 二人目など)
空白を区切りにand検索する処理なんです。
なのでvb.net側でForループで一個ずつ調べるとしても意味がないんです。



ちょっと落ち着いて考えましょう。矛盾点わかりますか?
この通りに書けば、
 「一人目」かつ「二人目」かつ「三人目」...
ということで、何が抽出されるのでしょうか?(「○人目」という意味に
もよりますが)

それと回答いただいているForループというのは、SQLの発行をループで
という意味では無く、SQL文を作成するところでForループを使うという
ことですよ。
Joinが使えるならJoinでも良いので、Where句を
 フィールド名 = ○○○ or フィールド名 = ○○△ or ...
または
 フィールド名 = ○○○ and フィールド名 = ○○△ and ...
のようなWhere以下の文字列を作れば良いわけです。

「一人目」というのがその通りの意味(抽出したレコードの先頭とか)なら
少し違いますけどね。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-06-03 16:29
名前 LIKE '%一人目%' AND 名前 LIKE '%二人目%' AND 名前 LIKE '%三人目%' (以下略)

という検索をしたい意図のようなので、別に矛盾はないと思います>Beatle氏
_________________
# Future Is On Fire !
uniqque
常連さん
会議室デビュー日: 2005/03/18
投稿数: 43
投稿日時: 2005-06-03 16:54
たくさんのご返答ありがとうございます。
Forループというのは
Dim roopstr as String
dim i as integer=0
for i = 0 to searchWord.length
roopstr+="LIKE " & "'%" & searchWord(i) & "%'"
next
のようにしてループさせるということなのでしょうか・・・
SQL文をもう一度勉強してこようと思います・・・
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-06-03 19:45
引用:

117さんの書き込み (2005-06-03 16:29) より:
名前 LIKE '%一人目%' AND 名前 LIKE '%二人目%' AND 名前 LIKE '%三人目%' (以下略)

という検索をしたい意図のようなので、別に矛盾はないと思います>Beatle氏




ん〜、SQLとしてはそうなんですが、これで引っかかるのは名前が
「hoge一人目hoge二人目hoge三人目hoge」
のような人?
uniqque
常連さん
会議室デビュー日: 2005/03/18
投稿数: 43
投稿日時: 2005-06-04 00:34
For文でstr+=tablename & " LIKE " & "'%" & searchword(i) & "%' AND"
のようにしてwhere以下の文を作る事ができました。
このようなやり方もあったんですね・・・。
しっかりと勉強してきます。

>>Beatleさん
名前 LIKE '%何人目%'ってのは例えで、実際の処理は違う内容なんです。
たしかに名前が1人目かつ二人目とかありえないですね・・・


スキルアップ/キャリアアップ(JOB@IT)