sql >> データベース >  >> RDS >> Sqlserver

Where 句の条件付きチェック

    このテクニックを使う人もいます

    ... WHERE @itemid IS NULL OR tbl.itemid = @itemid
      

    ただし、itemid 列でインデックス シークが発生しないことが保証されます。

    テーブルがまったく大きい場合のより良いアプローチは、クエリを 2 つの別々のケースに分割することです

    IF(@itemid IS NULL)
      SELECT foo FROM bar
    ELSE
      SELECT foo FROM bar WHERE itemid = @itemid
      

    組み合わせの数が多すぎる場合は、動的 SQL を検討できます。最初に SQL インジェクションを理解しておいてください。

    参照:T-SQL の動的検索条件



    1. PL / SQLのDDLステートメント?

    2. SQL Serverの列から文字を削除するにはどうすればよいですか?

    3. Pyodbc-データソース名が見つからず、デフォルトのドライバーが指定されていません

    4. リモートマシンからlibpqを使用してPostgreSQLにバイナリラージオブジェクト(BLOB)を挿入します