sql >> Database >  >> RDS >> Sqlserver

Hoe maak ik een opgeslagen procedure die optioneel in kolommen zal zoeken?

Terwijl de COALESCE truc is netjes, mijn voorkeursmethode is:

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

Dit soort SP's kan eenvoudig worden gegenereerd door code (en opnieuw gegenereerd voor tabelwijzigingen).

Je hebt een paar opties om met getallen om te gaan, afhankelijk van of je exacte semantiek of zoeksemantiek wilt.



  1. Verbinding maken met de database vanuit Unity

  2. Java SQLData - Cast naar gebruikersobject met een lijst/array?

  3. Kijken naar de prestaties van databasesnapshots

  4. Verbinding maken met de standaardinstantie van SQL Server en met SQL Server benoemde instanties - SQL Server / TSQL-zelfstudie, deel 2