Sqlserver
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlBulkCopy Вмъкване с колона за идентичност

  2. Въведение в функциите с таблично стойности с множество оператори (MSTVF) в SQL Server

  3. Как да конвертирате низ в дата/час в SQL Server с помощта на PARSE()

  4. SQL MAX от множество колони?

  5. SQL Server 2008 - подреждане по низове с числово число