首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-01-16 
多条件and搜索过程为什么不通CREATEPROCdbo.JdjcSearch@Wzsz_Cpmc1varchar(200),@Wzsz_Sjqy1varchar(200)A

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

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

热点排行