Consulta MySQL con comodín en cadenas de números
Pregunta
Estoy tratando de consultar una tabla mysql que contiene cadenas de números (es decir, '1,2,3,4,5').
¿Cómo busco para ver si tiene '1' pero no '11' teniendo en cuenta si es '9,10' '9%' no funciona?
¡Fijo!
(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%')
Solución
Necesita la función FIND_IN_SET . Por cierto, '9%' debería funcionar, si la columna contiene los valores que especificó, ¿está seguro de que está consultando?
SELECT * FROM table WHERE field LIKE '9%'?
Otros consejos
Puedes probar la función find_in_set
select find_in_set('1','1,2,3,11,12')
SQL estándar también puede hacerlo:
...
WHERE
',' + SetValue + ',' LIKE '%,1,%'
AND ',' + SetValue + ',' NOT LIKE '%,11,%'
Esta expresión no puede hacer uso de un índice, por lo tanto, el rendimiento se degradará rápidamente a medida que aumente el tamaño de la tabla.
Para un mejor rendimiento, su tabla debe normalizarse correctamente, por ejemplo,
SetId SetValue
1 1
1 2
1 3
1 4
1 5
en lugar de
SetId SetValue
1 '1,2,3,4,5'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow