SQL Server 2008多个"LIKE"问题

Leo*_*eon 3 sql t-sql sql-server full-text-search sql-server-2008

我正在使用MS SQL 2008,我现在面临着挑战.我的SP参数可以包含一个字符串中的一到三个单词(nvarchar),我必须为LIKE %phrase%字符串中的每个单词返回匹配的记录.

例.我的参数是:

"stack overflow"
Run Code Online (Sandbox Code Playgroud)

必须返回的记录:

miSTACKon
noOVERFLOWon
STACKit
poOWERFLOW
STACK
OWERFLOW
Run Code Online (Sandbox Code Playgroud)

我也考虑过FTS,但CONTAINS函数在(每个)短语的末尾只有一个通配符

phrase*
Run Code Online (Sandbox Code Playgroud)

除动态SQL之外,是否有解决此问题的方法?

Nix*_*Nix 6

从通用示例开始,然后我会用一些"联合所有"来模拟它

   select distinct Record from dbo.Records
     inner join dbo.Split('stack overflow', ' ') tokens 
       on records_table.Record like '%' + tokens.value + '%'
Run Code Online (Sandbox Code Playgroud)

所以我在下面做的是我嘲笑了一些数据,这些数据是"记录,以及来自dbo.Split函数的模拟返回,基本上是一个varchars表,'stack'和'overflow'标记为''.

select distinct Name from (
 select 'stack' as Name
 union all
 select 'nope' as Name
 union all
 select ' stackoverflow' as Name
   ) records_table 
   inner join (
   select 'stack' as value
     union all
    select 'overflow' as value) tokens 
    on records_table.Name like '%' + tokens.value + '%'
Run Code Online (Sandbox Code Playgroud)

结果:

stack
stackoverflow
Run Code Online (Sandbox Code Playgroud)

dbo.Split功能没什么特别的,有很多实现例子......