读书人

多条件and搜索过程为什么不通解决办法

发布时间: 2012-01-16 23:36:51 作者: rapoo

多条件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

你入的候,入一空字符串就可以。

读书人网 >SQL Server

热点推荐