- ベストアンサー
LIKEで検索
環境 プログラム VB データベース ACCESS 例えば、年月日が平成14年01月01日~平成14年01月30日靴の売上が1万円以上 または 年月日が平成14年01月01日~平成14年01月30日の売上がスーツが5万円以上の名前が”わ”(頭文字だけ、あ、か等)の人の抽出をしたいのですが、自分が書いたソースを載せるのでご指摘をお願いします。 If IsNumeric(Text1.Text) Then king = CLng(Text1.Text) Else king = 0 End If If IsNumeric(Text10.Text) Then kking = CLng(Text10.Text) Else kking = 0 End If HstrSQL = "SELECT * From 売上 where 年月日 Between '" & MaskEdBox2.Text & "' and '" & MaskEdBox3.Text & "' and 靴 >= " & king & _ " OR 年月日 Between '" & MaskEdBox4.Text & "' and '" & MaskEdBox5.Text & "' and スーツ >= " & kking & _ "AND ふりがな LIKE '" & "[" & Text4.Text & "]" & "%" & "'"
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 ANDとORがたくさん出てくるので、()できちんと括らないとまずいことになりそうです。 "SELECT * FROM 売上 " & _ "WHERE (((年月日 BETWEEN '" & MaskEdBox2.Text & "' AND '" & MaskEdBox3.Text & "')" & _ " AND 靴 >= " & king & ")" & _ " OR ((年月日 BETWEEN '" & MaskEdBox4.Text & "' AND '" & MaskEdBox5.Text & "')" & _ " AND スーツ >= " & kking & "))" & _ " AND (ふりがな LIKE '[" & Text4.Text & "]*')"
その他の回答 (3)
- osamuy
- ベストアンサー率42% (1231/2878)
基本的に、ORよりANDのほうが、優先順位が高い(+より*のほうが高いのと同じ。)ので、 SELECT * From 売上 where ( 年月日 Between <始期> and <終期> and 靴 >= <サイズ> ) OR ( 年月日 Between <始期> and <終期> and スーツ >= <サイズ> AND ふりがな LIKE <ふりがな> ) ――になってしまいます。 SELECT * From 売上 where ( 年月日 Between <始期> and <終期> and 靴 >= <サイズ> OR 年月日 Between <始期> and <終期> and スーツ >= <サイズ> ) AND ふりがな LIKE <ふりがな> ――みたいので、どうでしょう。 靴とスーツの<始期/終期>が一緒なら、 SELECT * From 売上 where 年月日 Between <始期> and <終期> AND ( 靴 >= <サイズ> or スーツ >= <サイズ> ) AND ふりがな LIKE <ふりがな>
- taisuke555
- ベストアンサー率55% (132/236)
ANDとORではANDの方が先に判定されてしまうので、 SELECT .... where (年月日 ... スーツ>=" & kking & ") AND ふりがな Like... にすればいいのではないでしょうか?
- osamuy
- ベストアンサー率42% (1231/2878)
AND ふりがな LIKE '[" & Text4.Text & "]*'" とすれば、 [わ]たなべ みたいな人がひっかかるかと(Text4に「わ」と入れた場合)。
補足
HstrSQL = "SELECT * From 売上 where 年月日 Between '" & MaskEdBox2.Text & "' and '" & MaskEdBox3.Text & "' and 靴 >= " & king & _ " OR 年月日 Between '" & MaskEdBox4.Text & "' and '" & MaskEdBox5.Text & "' and スーツ >= " & kking & _ "AND ふりがな LIKE '" & "[" & Text4.Text & "]" & "%" & "'" 例えば、靴の'わ'だけを抽出する場合はなるんですけど(靴の場合は" OR 年月日 ~ kking & _ は削除)、靴とスーツを抽出対象にすると'わ'ではなくて全て(五十音)がでてしまうのですがどうしてなのかわからないのでアドバイスをお願いします。