【发布时间】:2014-04-15 04:38:13
【问题描述】:
我们希望使用全文搜索,但在我们的过程中保持传入参数可以为空。在此示例中,@Street 可以具有类似 Heuvel 的值,也可以是 NULL。
在查询中解决这个问题是行不通的。
-
heuvel*给出了所有预期的行。 -
*给出零行,而论坛上的其他线程说它将给出所有行 -
street = isnull(@street, street)给出所有行
了解以上所有内容后,我认为此查询会起作用。可以,但速度很慢。
当我单独执行 or 子句时,查询速度很快。
Declare @Street nvarchar(50)= '"heuvel*"'
Declare @InnerStreet nvarchar(50) = '"'+ isnull(@Street, '') +'*"';
SELECT *
FROM Address
WHERE street = isnull(@street, street) or CONTAINS(street, @InnerStreet)
现在的问题是,如何使用全文搜索和可空参数?
【问题讨论】:
-
除了
@Street,你的存储过程还有多少可以为空的参数? -
原始查询中有多个可为空的参数。此线程中的查询是一个简化版本。
标签: sql sql-server tsql full-text-search contains