动态Sql-活动字段搜索条件的问题

动态Sql-活动字段搜索条件的问题,sql,sql-server,sql-server-2008,stored-procedures,dynamic-sql,Sql,Sql Server,Sql Server 2008,Stored Procedures,Dynamic Sql,我正在创建一个动态sql查询,用于在表tblEmployees中搜索。在tblEmployees中,我有一个名为active的字段,因此我希望如果我们为active as 1提供其他参数,那么它应该搜索active=1的记录,如果我们没有为任何值提供active,我的意思是既不是1也不是0,那么它应该使用我在查询中定义的其他参数进行搜索 CREATE TABLE tblEmployees2 ( EmployeeID SMALLINT IDENTITY(1001,1) NOT

我正在创建一个动态sql查询,用于在表
tblEmployees
中搜索。在
tblEmployees
中,我有一个名为
active
的字段,因此我希望如果我们为active as 1提供其他参数,那么它应该搜索active=1的记录,如果我们没有为任何值提供active,我的意思是既不是1也不是0,那么它应该使用我在查询中定义的其他参数进行搜索

CREATE TABLE tblEmployees2
(
    EmployeeID       SMALLINT IDENTITY(1001,1) NOT NULL,
    EmployeeName     NVARCHAR(100) NOT NULL,
    Department       NVARCHAR(50) NOT NULL,
    Designation      NVARCHAR(50) NOT NULL,
    JoiningDate      DATETIME NOT NULL,
    Salary           DECIMAL(10,2) NOT NULL,
    [Description]    NVARCHAR(1000) NULL,
    active           Tinyint NULL 
)

INSERT INTO tblEmployees
(EmployeeName, Department, Designation, 
 JoiningDate, Salary, [Description],active) 
VALUES    
('John Smith', 'IT Research', 'Research Analyst', 
 '02/08/2005', 23000.00, 'Analyst since 2005',1)

INSERT INTO tblEmployees
(EmployeeName, Department, Designation, 
 JoiningDate, Salary, [Description],active) 
VALUES    
('John Micheal', 'IT Operations', 'Manager', 
 '07/15/2007', 15000.00, NULL,0)

INSERT INTO tblEmployees
(EmployeeName, Department, Designation, 
 JoiningDate, Salary, [Description],active) 
VALUES    
('Will Smith', 'IT Support', 'Manager', 
 '05/20/2006', 13000.00, 'Joined last year as IT Support Manager',1)
还有动态sql--

更改此项:

set @SQLQuery=@active + ' And (active = @active)'
为此:

set @SQLQuery = @SQLQuery + ' And (active = @active)'

森林换树木?

你能解释一下这里的错误吗?该代码似乎能满足您的要求。SQL语句仅在
@active=1
时检查活动标志。你的意思可能是说如果@active在(0,1)中,则为
?这将允许您传递
NULL
,并且该列不会被视为查询的一部分。实际上,如果
set@active=0
,那么您将返回
active=0
active=1
,因为该子句没有添加到查询中。但正如我所说的,除了发布代码外,还要解释代码的实际问题。@Aaron,是的,它似乎可以工作,但我遇到了这样一个异常“在转换varchar值时转换失败”和(active=@active)“转换为数据类型tinyint”。以后,请发布您收到的错误消息。如果您没有强迫我们解析您的所有代码并尝试猜测可能出现的错误,您的问题将在大约17分钟前得到回答。是@Aaron.。从那时起,我将提供适当的信息。.是的,这是我的错。很抱歉。谢谢@Aaron现在它对我有用了。非常感谢你的努力。
set @SQLQuery = @SQLQuery + ' And (active = @active)'