SQL Server условно, где пункт большие проблемы - PullRequest
1 голос
/ 10 ноября 2011

2Я в большой беде, я рефакторинг очень большой процедуры для полнотекстового поиска, и я нашел очень важное внешнее применение:

select top 1 *
from tablea
where
 column1 like
  case
   when @value = 1 or @value = 2 then '%' + @something + '%'
   else '%'
  end

Логика здесь: если @value равно 1 или 2, получите первый регистр с @something внутри.Иначе, получите любой регистр.

Теперь мне нужно:

select top 1 *
from tablea
where
  case
   when @value = 1 or @value = 2 then contains(column1, @something)
   else 1 = 1
  end

Приведенный выше код не работает, он неправильно сформирован, и я понятия не имею, как это решить.

1 Ответ

1 голос
/ 10 ноября 2011
select top 1 *
from tablea
where
   (@value IN (1,2) AND (@something = '""' OR contains(column1, @something)))
 OR @value NOT IN (1,2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...