结合SQL Server的“LIKE”和“IN”

时间:2009-12-08 07:51:09

标签: sql sql-like

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

那么,这个查询

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

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

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

等...

6 个答案:

答案 0 :(得分:228)

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

答案 1 :(得分:176)

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

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

您可以使用where子句等进一步扩展它。 我只回答了这一点,因为这正是我所寻找的,我必须找到一种方法。

答案 2 :(得分:100)

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

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

答案 3 :(得分: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吗?

答案 4 :(得分:7)

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

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

答案 5 :(得分:3)

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