2012-02-24 12 views
3

SQLクエリを生成する関数を作成し、パラメータとして与えられた式(WHERE句として渡される)で結果をフィルタリングしたいと考えています。パラメータを省略すると、すべての結果が返されます。テーブル内のすべてのレコードを常に選択するWHERE句

これを行うには、nullパラメータをテストし、パラメータが指定されている場合にのみwhere句を作成します(where = (parameter != null) ? "" : "WHERE " + parameter)。しかし、私は、常にすべての結果を返すデフォルトにできる表現があると考えていました。このようにして、WHEREキーワード(where = "WHERE " + parameter)を含めるかどうかをテストする必要はありません。

注射を避けるためにパラメータをエスケープすることについては意図的に言及していません。私は私のソリューションでこれを忘れることはありません、私は約束します! :)

+0

あなたはどの言語を使用していますか?または、独自のSQL言語(T-SQLなど)を使用してクエリを生成していますか?タグを追加してください – PinnyM

+1

類似:http://stackoverflow.com/a/8149183/27535 – gbn

+0

私が扱っているアプリケーションに固有の独自のSQL言語です。これを行う方法がない可能性は非常に高いですが、私はこれを出発点としてこれを行う「標準的な」方法を見つけ出すと考えました。 –

答えて

9

私は通常、1 = 1を使用しています。

1

TRUEまたは1のようにパラメータを初期化することができます。

+3

すべてのDBMSがそれをサポートするわけではなく、OPは彼が使用しているDMBSを指定していません。 – ruakh

4
(where = "WHERE 1 = 1 " + parameter) 

この場合、パラメータは「AND」トークンで始まる必要があります。

関連する問題