如何在需要使用通配符的列中搜索多个值?

Kir*_*ten 4 sql-server select

在SQL Server中,我需要在列中搜索多个值,但我没有确切的值,所以我也需要使用通配符.

我当前的查询如下所示:

SELECT * 
FROM table 
WHERE fieldname in ( '%abc1234%',
                     '%cde456%',
                     '%efg8976%')
Run Code Online (Sandbox Code Playgroud)

这不会返回任何结果,但如果我搜索任何一个单独的值,我会找到它,所以我知道它们在那里.如果没有做多个OR,有几百个值有点笨拙,有没有办法做到这一点?

我也有兴趣知道为什么这个查询不起作用,因为没有%'的相同查询工作正常(除了只捕获几个完全匹配的小问题).

Joe*_*orn 14

看看使用全文索引.这应该做一个更好的工作与你的搜索,让你的"OR"的问题一点点更好的引导:

SELECT * 
FROM table 
WHERE CONTAINS(fieldname, '"abc1234" OR "cde456" OR "efg8976"')
Run Code Online (Sandbox Code Playgroud)

也可以看看:

http://www.simple-talk.com/sql/learn-sql-server/full-text-indexing-workbench/