Combinando "LIKE" e "IN" para SQL Server [duplicado]

Resuelto F.P asked hace 14 años • 5 respuestas

¿Es posible combinar LIKEy INen una consulta de SQL Server?

Entonces, que esta consulta

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

Encuentra cualquiera de estas posibles coincidencias:

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

etc...

F.P avatar Dec 08 '09 14:12 F.P
Aceptado

Efectivamente, la declaración IN crea una serie de declaraciones OR... entonces

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

es efectivamente

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

Y lamentablemente, ese es el camino que tendrás que tomar con tus declaraciones ME GUSTA.

SELECT * FROM table
WHERE column LIKE 'Text%' OR column LIKE 'Hello%' OR column LIKE 'That%'
Fenton avatar Dec 08 '2009 07:12 Fenton

Sé que esto es antiguo pero tengo una especie de solución funcional.

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

Puedes expandirlo aún más con tu cláusula donde, etc. Solo respondí esto porque esto es lo que estaba buscando y tenía que encontrar una manera de hacerlo.

lloydz1 avatar Jan 02 '2013 16:01 lloydz1

Otra opción sería usar algo como esto.

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
Adriaan Stander avatar Dec 08 '2009 08:12 Adriaan Stander

No, tendrás que utilizar ORpara combinar tus LIKEdeclaraciones:

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

¿ Has mirado la búsqueda de texto completo ?

Mitch Wheat avatar Dec 08 '2009 07:12 Mitch Wheat