2011-02-03 15 views
19

Tengo una tabla con dos columnas de cadenas: Url y ModelId. Tengo que devolver registros para los que Url contiene ModeloId, algo como esto:MySQL como otro campo

SELECT Id, Url, ModelId WHERE Url like "%ModelId%" 
+0

posible duplicado de [Usar LIKE% ..% con valores de campo en MySQL] (http://stackoverflow.com/questions/4420554/use-like-with-field-values-in-mysql) –

Respuesta

56
SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', ModelId, '%') 
+0

thx, busqué esto en todas partes –

+1

Técnicamente es posible que desee escapar del campo en caso de que tenga% en él: COMO CONCAT ('%', REPLACE (campo, '%', '\%'), '%') – dlo

0
SELECT Id, Url, ModelId from <table> WHERE Url like '%' + ModelId + '%' 
+0

su consulta no tiene sentido. – Fr0zenFyr

+0

¿desde cuándo funciona '+' para la concatenación de cadenas en MySQL? – billynoah

0

Ésta es la consulta:

SELECT Id, Url, ModelId WHERE Url LIKE CONCAT('%', ModelId, '%') 
0

No se puede simplemente concat las cuerdas, debe también escapa del campo de% y _:

SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', REPLACE(REPLACE(ModelId,'%','\%'),'_','\_'), '%'), '%') 
Cuestiones relacionadas