为SQL Server组合“LIKE”和“IN”[重复]

问题描述 投票:200回答:6

这个问题在这里已有答案:

是否可以在SQL Server-Query中组合LIKEIN

那么,这个查询

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

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

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

等等...

sql sql-like
6个回答
229
投票

实际上,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%'

178
投票

我知道这已经过时了,但我得到了一种有效的解决方案

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

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


101
投票

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

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

9
投票

不,你将不得不使用OR来组合你的LIKE声明:

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

你看过Full-Text Search吗?


7
投票

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

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

3
投票

不,MSSQL不允许此类查询。你应该使用col LIKE '...' OR col LIKE '...'等。

© www.soinside.com 2019 - 2024. All rights reserved.