Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment créer une procédure stockée qui recherchera éventuellement des colonnes ?

Pendant que le COALESCE l'astuce est sympa, ma méthode préférée est :

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 + '%')

Ces types de SP peuvent facilement être générés par du code (et régénérés pour les changements de table).

Vous disposez de plusieurs options pour gérer les nombres, selon que vous souhaitez une sémantique exacte ou une sémantique de recherche.