Объединение "LIKE" и " IN " для SQL Server [дубликат]

этот вопрос уже есть ответ здесь:

возможно ли объединить LIKE и IN В SQL Server-запрос?

так, что этот запрос

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

находит любой из этих возможных спички:

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

etc...

6 ответов


эффективно оператор IN создает ряд операторов OR... так что

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

эффективно

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

и, к сожалению, это маршрут, который вам придется взять с вашими подобными заявлениями

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

Я знаю, что это старый, но у меня есть своего рода рабочее решение

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

вы можете расширить его дальше с помощью предложения where и т. д. Я ответил только потому, что это то, что я искал, и я должен был найти способ сделать это.


еще один вариант-использовать что-то вроде этого

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

нет, вам придется использовать OR объединить свой LIKE отчетность:

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

вы смотрели Полнотекстовый Поиск?


вам нужно несколько подобных предложений, связанных с OR.

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

нет, MSSQL не разрешает такие запросы. Вы должны использовать col LIKE '...' OR col LIKE '...' etc.