Tsql 是否始终计算全文搜索包含子句?

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

在下面的例子中,有没有办法避免错误Null或空全文谓词

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子句中有很多其他过滤器,所以我不想复制所有这些逻辑。我希望我能避免。。。