当前位置: 代码迷 >> Sql Server >> 多条件and搜索过程为什么不通解决办法
  详细解决方案

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

热度:22   发布时间:2016-04-27 19:08:59.0
多条件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     ' '% '[email protected]_Cpmc1+   '% ' ' '
END

IF   @Wzsz_Sjqy1   is   not   null
begin
Set   @Sql   =   @Sql+ '     and     '
Set   @Sql   =   @Sql   + '   Col014   LIKE     ' '% '[email protected]_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 ' '% '[email protected]_Cpmc1+ '% ' ' '
END

IF IsNull(@Wzsz_Sjqy1, ' ') != ' '
begin
Set @Sql = @Sql+ ' and '
Set @Sql = @Sql + ' Col014 LIKE ' '% '[email protected]_Sjqy1+ '% ' ' '
END

EXEC sp_executeSql @Sql

WITH RECOMPILE
GO

你傳入的時候,傳入一個空字符串就可以。
  相关解决方案