web-dev-qa-db-fra.com

Combinaison de "LIKE" et "IN" pour SQL Server

Est-il possible de combiner LIKE et IN dans une requête SQL Server?

Alors, que cette requête

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

Trouve l'une de ces correspondances possibles:

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

etc...

215
Florian Peschka

En effet, l’instruction IN crée une série d’énoncés OR ... donc

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

Est effectivement

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

Et malheureusement, c’est la voie à suivre avec vos déclarations

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

Je sais que c'est vieux, mais j'ai une sorte de solution de travail

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

Vous pouvez le développer davantage avec votre clause where, etc. Je n'y ai répondu que parce que c'est ce que je cherchais et que je devais trouver un moyen de le faire.

188
lloydz1

Une autre option serait d'utiliser quelque chose comme ça

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
103
Adriaan Stander

Non, vous devrez utiliser OR pour combiner vos déclarations LIKE:

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

Avez-vous consulté recherche en texte intégral ?

9
Mitch Wheat

Vous avez besoin de plusieurs clauses LIKE connectées par OR.

SELECT * FROM table WHERE 
column LIKE 'Text%' OR 
column LIKE 'Link%' OR 
column LIKE 'Hello%' OR 
column LIKE '%World%' OR 
8
Eric J.

Non, MSSQL n'autorise pas de telles requêtes. Vous devez utiliser col LIKE '...' OR col LIKE '...' etc.

5
Andrew Lygin