2012-03-04 8 views
6

Tengo una tabla mysql 5 con un campo Char sosteniendoMySQL seleccionar usando un comodín (pero comodín en campo)

DOG 
DOUG 
CAT 
MOUSE 

Ahora quiero seleccionar en este campo, la búsqueda de las filas donde existe ese campo dentro de una cadena , como "PERRITO". (Esto es lo contrario de cómo normalmente usas un comodín). Así que quiero un selecto algo como: SELECT de la tabla donde campo es subcadena de "Doggy"

Es esto posible?

+0

Podría explicar más lo que estás tratando de hacer? – menacingly

+0

Específicamente, ¿desea encontrar filas donde el campo tenga una subcadena de "perrito" (es decir, el texto contiene algunas de las letras en "perrito" pero no necesariamente todas)? ¿O desea encontrar filas donde "perrito" es una subcadena del campo (es decir, el campo contiene la palabra "perrito" más posiblemente otro texto)? En el primer caso, su consulta coincidiría con filas con texto como "dog", "dogg" y "gy". En el segundo caso, su consulta coincidiría con filas con texto como "hola perrito" y "¿qué hace ese perrito allí?" – octern

+0

Quiero encontrar filas donde los campos contengan una subcadena de la palabra en la que estoy buscando. Entonces, en el ejemplo anterior, mi selección devolvería la fila con "PERRO" en el campo. –

Respuesta

5

Usted debe ser capaz de utilizar LOCATE() para lograrlo:

SELECT * FROM MyTable WHERE LOCATE(MyField, 'DOGGY') != 0; 
+1

Downvoter, no dude en comentar. –

+2

Acabo de jugar con esta función y parece funcionar como se requiere/upvote – Ing

14
select * from mytable where 'doggy' like concat('%',mycol,'%') 
+0

\ * mind blown \ * - Uso LIKE todo el tiempo pero nunca se me ocurrió revertir los parámetros como este, y tuve que probarlo antes Estaba convencido de que podría funcionar. Supongo que soy solo un novato, pero creo que esta es una respuesta increíble. – octern