370 votes

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...

385voto

Steve Fenton Points 55265

En effet, l’instruction IN crée une série d’instructions 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 que vous devrez suivre avec vos déclarations LIKE

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

301voto

lloydz1 Points 81

Je sais que c'est vieux mais je vais 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. J'ai seulement répondu car c'était ce que je cherchais et je devais trouver un moyen de le faire.

130voto

astander Points 83138

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
 

19voto

Mitch Wheat Points 169614

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é la recherche en texte intégral ?

9voto

Eric J. Points 73338

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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X