Tengo esta consulta MySQL.
Tengo campos de base de datos con este contenido
sports,shopping,pool,pc,games
shopping,pool,pc,games
sports,pub,swimming, pool, pc, games
¿Por qué esta consulta similar no funciona? Necesito los campos con deportes o pub o ambos?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Manera más rápida de hacer esto:
Es esto:
Encontré esta solución aquí: http://forums.mysql.com/read.php?10,392332,392950#msg-392950
Más sobre REGEXP aquí: http://www.tutorialspoint.com/mysql/mysql-regexps.htm
fuente
(select group_concat(myColumn separator '|') from..)
¿Por qué no pruebas REGEXP? Pruébalo así:
fuente
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(> ‿◠) ✌jazkat
respuesta presentada 5 años antes que la suya?También puedes usarlo
RLIKE
también.Por ejemplo:
fuente
Su consulta debe ser
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Lo que entiendo es que almacena los intereses en un campo de su tabla, lo cual es un error. Definitivamente debe tener una tabla de "intereses".
fuente
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
, pero es probable que esta técnica supere a la expresión regular en la mayoría de las situaciones.No olvide usar paréntesis si usa esta función después de un
AND
parámetroMe gusta esto:
fuente
O si necesita coincidir solo con el comienzo de las palabras:
puedes usar las coincidencias regexp caret:
https://www.regular-expressions.info/anchors.html
fuente
Como propuso @Alexis Dufrenoy, la consulta podría ser:
Más información en el manual .
fuente
Más ejemplos de trabajo:
La tarea consistía en contar los participantes en un evento (s) con filtro si la extensión de correo electrónico era igual a varios dominios de la compañía.
fuente