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 为空,但它更接近自由文本。

谢谢!

4

2 回答 2

0

您可以扩展 where 条件,执行以下操作以使其工作:

DECLARE @DocumentTitle VARCHAR(150)
SET @DocumentTitle = NULL
SELECT * 
FROM [table]
WHERE 
    FREETEXT([Title], @DocumentTitle)
        OR
    @DocumentTitle IS NULL
于 2013-04-21T11:12:34.403 回答
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 = '""'  
于 2013-04-22T06:55:03.757 回答