2011-02-03 13 views
19

Ho una tabella con due colonne di stringhe: Url e ModelId. Ho bisogno di restituire i record per i quali URL contiene ModelId, qualcosa di simile:MySQL come un altro campo

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

possibile duplicato di [Usa LIKE% ..% con valori di campo in MySQL] (http://stackoverflow.com/questions/4420554/use-like-with-field-values-in-mysql) –

risposta

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

thx, cercavamo questo ovunque –

+1

Tecnicamente potresti voler scappare dal campo nel caso in cui abbia% in esso: LIKE CONCAT ('%', REPLACE (campo, '%', '\%'), '%') – dlo

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

la tua query non ha senso. – Fr0zenFyr

+0

da quando funziona '+' per la concatenazione di stringhe in MySQL? – billynoah

0

Ecco la domanda:

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

Non si può semplicemente concat le stringhe, è necessario anche sfuggire il campo da% e _:

SELECT Id, Url, ModelId 
WHERE Url LIKE CONCAT('%', REPLACE(REPLACE(ModelId,'%','\%'),'_','\_'), '%'), '%') 
Problemi correlati