如何在sql程序中使用动态过滤器?

时间:2016-10-17 14:52:17

标签: sql tsql procedure

我想在sql过程中使用动态过滤器 ,像这样

从Table Where @Filter

中选择*

我可以这样写,还是使用不同的方法 我必须使用此语法,因为我希望在应用程序和使用过程中删除选择。

3 个答案:

答案 0 :(得分:0)

CREATE PROCEDURE spProcedurName
 @Filter  datatype
AS
BEGIN
   SELECT *
   FROM Table
   WHERE columnName= @Filter

END

你可以这样做。

答案 1 :(得分:0)

@Query ='
 从表格中选择* + @Filter

exec @Query

答案 2 :(得分:0)

CREATE PROCEDURE SP_DynamicFilter
(
    -- Optional Filters for Dynamic Search
    @COLUMN1       INT = NULL,
    @COLUMN2       NVARCHAR(50) = NULL,
    @COLUMN3       NVARCHAR(50) = NULL,
    @COLUMN4       NVARCHAR(50) = NULL
)
AS
BEGIN
    SELECT *
    FROM TableName
    WHERE
        (@COLUMN1 IS NULL OR Column1 = @COLUMN1)
    AND (@COLUMN2 IS NULL OR Column2 LIKE '%' + @COLUMN2 + '%')
    AND (@COLUMN3 IS NULL OR Column3 LIKE '%' + @COLUMN3 + '%')
    AND (@COLUMN4 IS NULL OR Column4 LIKE '%' + @COLUMN4 + '%')
END