Объединение "LIKE" и "IN" для SQL Server

Можно ли комбинировать LIKE и IN в SQL Server-Query?

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

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

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

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

и т.д...

Ответ 1

Фактически, оператор 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%'

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Нет, вам нужно будет использовать OR для объединения ваших операторов LIKE:

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

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

Ответ 6

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