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

オプションで列を検索するストアドプロシージャを作成するにはどうすればよいですか?

    COALESCE トリックはきちんとしていて、私の好みの方法は次のとおりです:

    CREATE PROCEDURE ps_Customers_SELECT_NameCityCountry
        @Cus_Name varchar(30) = NULL
        ,@Cus_City varchar(30) = NULL
        ,@Cus_Country varchar(30) = NULL
        ,@Dept_ID int = NULL
        ,@Dept_ID_partial varchar(10) = NULL
    AS
    SELECT Cus_Name
           ,Cus_City
           ,Cus_Country
           ,Dept_ID
    FROM Customers
    WHERE (@Cus_Name IS NULL OR Cus_Name LIKE '%' + @Cus_Name + '%')
          AND (@Cus_City IS NULL OR Cus_City LIKE '%' + @Cus_City + '%')
          AND (@Cus_Country IS NULL OR Cus_Country LIKE '%' + @Cus_Country + '%')
          AND (@Dept_ID IS NULL OR Dept_ID = @DeptID)
          AND (@Dept_ID_partial IS NULL OR CONVERT(varchar, Dept_ID) LIKE '%' + @Dept_ID_partial + '%')
    

    これらの種類のSPは、コードで簡単に生成できます(テーブルを変更するために再生成できます)。

    正確なセマンティクスまたは検索セマンティクスが必要かどうかに応じて、数値を処理するためのいくつかのオプションがあります。



    1. T-SQLを使用してSQLServerのテーブルの列権限を取得します:sp_column_privileges

    2. MySQL –ランダム番号を生成する方法

    3. SQLiteでのUnicode()のしくみ

    4. MSSQLServerデータベースでのインデックスの最適化の自動化