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

そのステートメントの変数がnullの場合、WHEREステートメントをスキップします

    あなたの質問のこの単純なケースには、

    を使用してください。
    IF ( @place IS NULL )
      SELECT *
      FROM   table1
    ELSE
      SELECT *
      FROM   table1
      WHERE  country = @place  
    

    実際の状況がもっと複​​雑な場合は、使用できます

    select * 
    from Table1 
    where @place is null or [email protected] 
    option (recompile)
    

    recompileが必要な理由 ヒントは、両方のケースに対応する単一のプランを用意したり、明示的な値を指定した場合に不要なスキャンを実行したりしないようにすることです。

    これら、およびクエリの動的生成などの他の代替方法については、記事動的検索で詳しく説明されています。 T-SQLの条件



    1. T-SQL で '01-Sep-2017' を '01/09/2017' に変換しますか?

    2. oraclesqlplusでテーブルデータをより明確に表示する方法

    3. 特定のポイントから自動インクリメントを開始するにはどうすればよいですか?

    4. MavericksでのMySQLサーバーの起動の問題