sql server条件where子句大麻烦

时间:2011-11-10 17:13:00

标签: sql sql-server-2008 full-text-search

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 个答案:

答案 0 :(得分:1)

select top 1 *
from tablea
where
   (@value IN (1,2) AND (@something = '""' OR contains(column1, @something)))
 OR @value NOT IN (1,2)