多条件and搜索过程为什么不通
CREATE PROC dbo.JdjcSearch
@Wzsz_Cpmc1 varchar(200),
@Wzsz_Sjqy1 varchar(200)
AS
Declare @Sql nvarchar(1024)
Set @Sql = ' SELECT Col001, Col002, Col014 FROM Jdjc where (Col001 is not null) '
IF @Wzsz_Cpmc1 is not null
begin
Set @Sql = @Sql+ ' and '
Set @Sql = @Sql + ' Col002 LIKE ' '% '+@Wzsz_Cpmc1+ '% ' ' '
END
IF @Wzsz_Sjqy1 is not null
begin
Set @Sql = @Sql+ ' and '
Set @Sql = @Sql + ' Col014 LIKE ' '% '+@Wzsz_Sjqy1+ '% ' ' '
END
EXEC sp_executeSql @Sql
WITH RECOMPILE
GO
以上两个参数
@Wzsz_Cpmc1 varchar(200),
@Wzsz_Sjqy1 varchar(200)
当满足一个结果为空,必须要两个条件都满足才能搜索出内容。为什么?
------解决方案--------------------CREATE PROC dbo.JdjcSearch
@Wzsz_Cpmc1 varchar(200),
@Wzsz_Sjqy1 varchar(200)
AS
Declare @Sql nvarchar(1024)
Set @Sql = ' SELECT Col001, Col002, Col014 FROM Jdjc where (Col001 is not null) '
IF IsNull(@Wzsz_Cpmc1, ' ') != ' ' --將 ' '的情況也加上
begin
Set @Sql = @Sql+ ' and '
Set @Sql = @Sql + ' Col002 LIKE ' '% '+@Wzsz_Cpmc1+ '% ' ' '
END
IF IsNull(@Wzsz_Sjqy1, ' ') != ' '
begin
Set @Sql = @Sql+ ' and '
Set @Sql = @Sql + ' Col014 LIKE ' '% '+@Wzsz_Sjqy1+ '% ' ' '
END
EXEC sp_executeSql @Sql
WITH RECOMPILE
GO
你傳入的時候,傳入一個空字符串就可以。