335

是否可以在 SQL Server 查询中组合LIKE和?IN

所以,这个查询

SELECT * FROM table WHERE column LIKE IN ('Text%', 'Link%', 'Hello%', '%World%')

查找以下任何可能的匹配项:

Text, Textasd, Text hello, Link2, Linkomg, HelloWorld, ThatWorldBusiness

ETC...

4

6 回答 6

350

实际上,IN 语句创建了一系列 OR 语句......所以

SELECT * FROM table WHERE column IN (1, 2, 3)

有效地

SELECT * FROM table WHERE column = 1 OR column = 2 OR column = 3

可悲的是,这就是你的 LIKE 语句必须采取的路线

SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
于 2009-12-08T07:55:27.257 回答
279

我知道这很旧,但我有一种可行的解决方案

SELECT Tbla.* FROM Tbla
INNER JOIN Tblb ON
Tblb.col1 Like '%'+Tbla.Col2+'%'

您可以使用 where 子句等进一步扩展它。我只回答了这个问题,因为这是我正在寻找的东西,我必须想办法做到这一点。

于 2013-01-02T16:44:24.410 回答
124

另一种选择是使用这样的东西

SELECT  * 
FROM    table t INNER JOIN
        (
            SELECT  'Text%' Col
            UNION SELECT 'Link%'
            UNION SELECT 'Hello%'
            UNION SELECT '%World%'
        ) List ON t.COLUMN LIKE List.Col
于 2009-12-08T08:07:04.227 回答
14

不,您将不得不使用OR来组合您的LIKE陈述:

SELECT 
   * 
FROM 
   table
WHERE 
   column LIKE 'Text%' OR 
   column LIKE 'Link%' OR 
   column LIKE 'Hello%' OR
   column LIKE '%World%'

你看过全文搜索吗?

于 2009-12-08T07:55:20.487 回答
10

您需要通过 OR 连接多个 LIKE 子句。

SELECT * FROM table WHERE 
column LIKE 'Text%' OR 
column LIKE 'Link%' OR 
column LIKE 'Hello%' OR 
column LIKE '%World%' OR 
于 2009-12-08T07:53:32.843 回答
5

不,MSSQL 不允许这样的查询。你应该使用col LIKE '...' OR col LIKE '...'等。

于 2009-12-08T07:54:35.623 回答