基于SQL条件的搜索,不能与AND条件一起使用

问题描述 投票:1回答:1

我正在执行搜索操作(通过存储过程进行客户端搜索)我有一个“ Nvarchar”类型列“ ArticleHeader”和一个“ DATE”列“ DateEffective”我通过传递@operator来执行基于条件的搜索,对于休闲的代码段,我试图在Conjunction(AND)中搜索日期和文章标题我没有任何结果,如果我单独运行它们,效果很好。

查找代码段:

CREATE TABLE #TempItems
(
    DateEffective DATE,
    ArticleHeader NVARCHAR(50)
)

insert into #TempItems values ('2019-12-28','Nieuws')
insert into #TempItems values ('2020-02-12','Test')
insert into #TempItems values ('2020-01-10','zolo')
insert into #TempItems values ('2020-02-23','valued')

declare @DateEffective datetime,@operator nvarchar(10)
--set @DateEffective ='2020-01-10'
set @operator='neq'
declare @ArticleHeader nvarchar (50) ='Nieuws'

select * from #TempItems PA
Where 1=1
--------------------------------------------------------------------
And
(
(
(@operator='neq') And
CASE WHEN @DateEffective IS NULL 
THEN '1900-1-1' 
ELSE convert(date,PA.DateEffective) 
END !=
CASE WHEN @DateEffective IS NULL 
THEN '1900-1-1' 
ELSE Convert(Date, @DateEffective)
End
)
OR
(
(@operator='eq') And
CASE WHEN @DateEffective IS NULL 
THEN '1900-1-1' 
ELSE convert(date,PA.DateEffective) 
END =
CASE WHEN @DateEffective IS NULL 
THEN '1900-1-1' 
ELSE Convert(Date, @DateEffective)
End
)
)
----------------------------------------------------------------------
AND
(
(lower(@Operator) = 'eq' AND 
CASE WHEN @ArticleHeader IS NULL
            THEN '1'
            ELSE PA.ArticleHeader
      END =
      CASE WHEN @ArticleHeader IS NULL
                    THEN '1'
                    ELSE CONVERT(nvarchar(1000), @ArticleHeader)
      END
)
OR
(lower(@Operator) = 'startswith' AND 
CASE WHEN @ArticleHeader IS NULL
            THEN '1'
            ELSE PA.ArticleHeader
      END Like 
      CASE WHEN @ArticleHeader IS NULL
                    THEN '1'
                    ELSE CONVERT(nvarchar(1000), @ArticleHeader) + '%'
      END
)
)
---------------------------------------------------------------------------
sql search sql-server-2017
1个回答
1
投票
您好,@ Azhar,您能否检查此查询,在两种情况下均能正常工作。
© www.soinside.com 2019 - 2024. All rights reserved.