Combinaison "LIKE" Et " IN "pour SQL Server [dupliquer]

cette question a déjà une réponse ici:

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

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

165
demandé sur MPelletier 2009-12-08 10:51:09

6 réponses

effectivement, l'énoncé IN crée une série D'énoncés ou... so

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 route que vous aurez à prendre avec vos déclarations similaires

SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
188
répondu user75525 2009-12-08 07:55:27

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

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

vous pouvez l'étendre avec votre clause where etc. J'ai seulement répondu à cela parce que c'est ce que je cherchais et je devais trouver un moyen de le faire.

144
répondu lloydz1 2018-09-04 16:41:43

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
93
répondu Adriaan Stander 2009-12-08 08:07:04

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

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

avez-vous regardé recherche en texte intégral ?

7
répondu Mitch Wheat 2014-01-24 05:48:30

vous avez besoin de plusieurs clauses similaires reliées par OR.

SELECT * FROM table WHERE 
column LIKE 'Text%' OR 
column LIKE 'Link%' OR 
column LIKE 'Hello%' OR 
column LIKE '%World%' OR 
4
répondu Eric J. 2009-12-08 07:53:32

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

1
répondu Andrew Lygin 2009-12-08 07:54:35