sql >> Base de Datos >  >> RDS >> Mysql

Buscar matriz de publicaciones en valor de columna separada por comas

Solución 1:

Como comentó @Jens, es un mal diseño de base de datos almacenar valores como CSV. Entonces, la primera solución sería cambiar el diseño de su base de datos, ya que realmente no sé qué está almacenando y cuál es el propósito de su base de datos/código I no puede escribir un esquema ni dar ninguna sugerencia significativa.

Solución 2:

Use MySQL find_in_set función.

SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)

Solución 3:

Puedes usar el LIKE operador. (Algunos miembros probablemente me matarán por sugerirlo, pero si no desea cambiar el diseño de su base de datos, esta es una opción creativa).

Revisemos el siguiente código:

SELECT id FROM table WHERE filter_data LIKE '%2,%'

El problema es que devolverá el id de un campo con 22, en la columna de filter_data. Por lo tanto, tendrá que cambiar los datos debajo de esa columna para que , aparecerá también como el primer y último carácter. Por ejemplo:

id | filter_data   |
---|---------------
1  |,2,3,45,67,4,  |
2  |,2,3,55,33,5,7,|

Y ahora puedes hacer lo siguiente:

SELECT id FROM table WHERE filter_data LIKE '%,2,%'

Si tiene varios "filtros de búsqueda", puede combinar el LIKE s con OR operador.