选择包含的每一行

时间:2013-04-21 10:20:54

标签: sql-server tsql freetext

我有一个基于某个过滤器返回表的函数。其中一个过滤器是一个可以为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。

谢谢!

2 个答案:

答案 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 = '""'