0

ユーザーがさまざまなオプションを選択して、データの下にあるグリッド内のデータをソートする画面があるとします。データは、データベースから jQuery を介して非同期的にフェッチされます。

ユーザーが選択すると、userデータを表示する必要があります。status=1

SELECT * FROM user WHERE status=1;

2、3、4 についても同様に、変数を渡すことができます。

ただし、ユーザーが何も選択しない場合は、すべての結果が返されますusersALLレコードを取得するクエリで渡すことができる式またはキーワードも同様です。たとえば、次のようになります。

SELECT * FROM user WHERE status=ANYTHING; -- EVERYTHING, ALL, ANY

上記の例は、私の状況を説明するための架空の例にすぎないため、ケースごとに異なるクエリを記述したくありません。実際のケースは少し複雑です。

4

4 に答える 4

3
SELECT * FROM user WHERE @status is null Or status = @status
于 2013-10-28T12:26:32.793 に答える
2

ISNULL() または COALESCE() 関数を使用します。すべてのレコードのパラメーターに NULL 値を渡し、次のようにクエリを記述します

SELECT * FROM user WHERE status=ISNULL(@status,status)

UPDATE :上記のクエリはnullレコードを返さないため、テーブルにnullレコードがある場合は、Kafが言及したようにクエリを記述する必要があります

SELECT * FROM user WHERE @status is null Or status = @status
于 2013-10-28T12:21:08.250 に答える
0

where句が読み取れるように、クエリに2番目のパラメーターを提供できます

WHERE STATUS = @Status or @RetrieveAll=1

多分

WHERE Coalesce(STATUS, 0) = @Status or @RetrieveAll=1

于 2013-10-28T12:50:10.367 に答える