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,%') 
¿Fue útil?

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
scroll top