Tsql 是否始终计算全文搜索包含子句?
在下面的例子中,有没有办法避免错误Null或空全文谓词Tsql 是否始终计算全文搜索包含子句?,tsql,full-text-search,Tsql,Full Text Search,在下面的例子中,有没有办法避免错误Null或空全文谓词 DECLARE @SearchText VARCHAR(1000); SET @SearchText = '' SELECT * FROM myTable WHERE /* SOME CONTITIONS AND */ ( @SearchText = '' OR ( @SearchText <> '' AND
DECLARE @SearchText VARCHAR(1000);
SET @SearchText = ''
SELECT * FROM myTable
WHERE
/*
SOME CONTITIONS
AND
*/
(
@SearchText = ''
OR
(
@SearchText <> ''
AND
CONTAINS((myField1, myField2), @SearchText)
)
)
我可以这样做,但我想避免重复代码:
DECLARE @SearchText VARCHAR(1000);
SET @SearchText = ''
IF @SearchText = ''
BEGIN
SELECT * FROM myTable
WHERE
/*
SOME CONTITIONS
*/
END
ELSE
BEGIN
SELECT * FROM myTable
WHERE
/*
SOME CONTITIONS
AND
*/
(
@SearchText = ''
OR
(
@SearchText <> ''
AND
CONTAINS((myField1, myField2), @SearchText)
)
)
END
[编辑]
我找到了答案
因此,解决方案是将@SearchText设置为“”,而不是将其保留为空。我找到了答案
解决方案是将@SearchText设置为“”,而不是将其保留为空。搜索匹配所有模式的结果。像“a*或b*或…”这样的默认模式匹配大多数单词。仍然有可能丢失仅包含干扰字、数字等的行@user\d*-这个想法是,当我没有任何东西可以搜索@SearchText=,我会得到一个错误Null或空全文谓词。我在WHERE子句中有很多其他过滤器,所以我不想复制所有这些逻辑。我希望我能避免。。。