2013-04-21 91 views
0

我有一个函数根据某个过滤器返回一个表。其中一个过滤器的是它可以为null过滤表时,以下查询可能是一个标题:选择包含的每一行

DECLARE @DocumentTitle VARCHAR(150) 
SET @DocumentTitle = NULL 
SELECT * 
FROM [table] 
    WHERE 
    FREETEXT([Title], @DocumentTitle) 

这意味着该用户不希望来过滤的标题。所以我应该设置一个返回所有值的值为@DocumentTitle

这是什么值?

(我已经尝试'','''',''''','','')。

我该如何做到这一点?

(@DocumentTitle IS NOT NULL AND FREETEXT([Title], @DocumentTitle)) 

因为@DocumentTitle为空,但它会进一步FREETEXT。

谢谢!

回答

0

SOLUTION:

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 = '""' 
0

你可以扩大在那里的条件,做这样的事情,使其工作:

DECLARE @DocumentTitle VARCHAR(150) 
SET @DocumentTitle = NULL 
SELECT * 
FROM [table] 
WHERE 
    FREETEXT([Title], @DocumentTitle) 
     OR 
    @DocumentTitle IS NULL