VBScript では、アンパサンド (&) 記号を使用して文字列を連結できます。これを試してください:
strSqlData="select * from MyTable where gender='male'" if AcademicYear <> "" then strSqlData= strSqlData & " and AcademicYear=" & AcademicYear end if if Batch <> "" then strSqlData= strSqlData & " and Batch=" & Batch end if if School <> "" then strSqlData= strSqlData & " and School=" & School end if
プレ>SQL クエリに追加する 3 つの個別の「and」句があります。条件ステートメントは互いに独立しているため、
elseif
を使用しないでください。 これは、単一の条件ステートメント内のさまざまなオプション用です。文字列が空でないかどうかを確認する方が簡単ですif stringname <> ""
len
を使用するよりも 、(そして、ゼロを使用すべきところに小文字の「o」を使用しているように見えるため、条件ステートメントが機能するとは思えません)このように sql クエリを組み立てていると、間違いを犯しやすくなります。テストでは、
Response.Write strSqlData
のような行を追加する価値があることがよくあります 実行しようとする前に、クエリが意図したものであることを確認してくださいただし、他のコメントが示唆しているように、コードは SQL インジェクション攻撃に対して脆弱です。 「.asp?」を含む URL遅かれ早かれ、ASPROX タイプの攻撃を受けることはほぼ確実です。パラメータ化されたクエリはこれを防ぐ最善の方法ですが、クエリ文字列の値がすべて数値である場合の簡単な方法の 1 つは、
cint()
を使用することです。 - 例strSqlData= strSqlData & " and AcademicYear=" & cint(AcademicYear)
プレ>クエリ文字列に数値以外が含まれていると、型の不一致エラーがスローされ、SQL クエリを実行する前にスクリプトがフォールオーバーします。