Всегда ли оценивается условие Полнотекстового поиска CONTAINS? - PullRequest
2 голосов
/ 09 февраля 2012

Есть ли способ избежать ошибки Нулевой или пустой полнотекстовый предикат в приведенном ниже примере?

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 на '""' вместо того, чтобы оставлять его пустым.

1 Ответ

3 голосов
/ 10 февраля 2012

Я нашел ответ здесь .

Решение состоит в том, чтобы установить @SearchText на '""' вместо того, чтобы оставлять его пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...