有可能在SQL服务器查询中结合LIKE和IN吗?

这就是这个查询

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

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

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

等等……


当前回答

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

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

你可以用where子句等进一步扩展它。 我只是回答这个问题,因为这是我一直在寻找的,我必须找到一种方法来做到这一点。

其他回答

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

不,你必须使用OR来组合你的LIKE语句:

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

你看过全文搜索吗?

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

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

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

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

你可以用where子句等进一步扩展它。 我只是回答这个问题,因为这是我一直在寻找的,我必须找到一种方法来做到这一点。

不,MSSQL不允许这样的查询。你应该使用col LIKE '…'或者col LIKE '…”等。