有可能在SQL服务器查询中结合LIKE和IN吗?
LIKE
IN
这就是这个查询
SELECT * FROM table WHERE column LIKE IN ('Text%', 'Link%', 'Hello%', '%World%')
找到以下任何可能的匹配项:
Text, Textasd, Text hello, Link2, Linkomg, HelloWorld, ThatWorldBusiness
等等……
不,MSSQL不允许这样的查询。你应该使用col LIKE '...' OR col LIKE '...'等。
col LIKE '...' OR col LIKE '...'
不,你必须使用OR来组合你的LIKE语句:
OR
SELECT * FROM table WHERE column LIKE 'Text%' OR column LIKE 'Link%' OR column LIKE 'Hello%' OR column LIKE '%World%'
你看过全文搜索吗?
实际上,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%'
另一个选择是使用像这样的东西
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+'%'