我有一个基于某个过滤器返回表的函数。其中一个过滤器是一个可以为null的标题过滤表时可以使用以下查询:
DECLARE @DocumentTitle VARCHAR(150)
SET @DocumentTitle = NULL
SELECT *
FROM [table]
WHERE
FREETEXT([Title], @DocumentTitle)
这意味着用户不想过滤标题。所以我应该设置@DocumentTitle
一个返回所有内容的值。
那是什么价值?
(我已经尝试过'','“”','“”','','')。
OR
我如何才能做到这一点?
(@DocumentTitle IS NOT NULL AND FREETEXT([Title], @DocumentTitle))
因为@DocumentTitle为null,但它更接近freetext。
谢谢!
答案 0 :(得分:0)
你可以扩展where条件,做这样的事情让它起作用:
DECLARE @DocumentTitle VARCHAR(150)
SET @DocumentTitle = NULL
SELECT *
FROM [table]
WHERE
FREETEXT([Title], @DocumentTitle)
OR
@DocumentTitle IS NULL
答案 1 :(得分:0)
解决方案:
declare @Search nvarchar(1000) = NULL --'test'
set @Search = ISNULL(@Search , '""')
--if @Search is null returns everything
select *
from TestTabel
where contains(Column, @Search ) OR @Search = '""'