FIND_IN_SET es una función de cadena en MySQL usada para encontrar la posición de una cadena en una lista de cadenas separadas por comas. Devuelve un número entero que indica la posición de la cadena encontrada (contando desde 1), o 0 si la cadena no está en la lista. Esta función se utiliza a menudo para trabajar con campos que se almacenan como cadenas separadas por comas, aunque este diseño no es generalmente recomendado (es mejor usar las ventajas de una base de datos relacional, como crear tablas relacionales de muchos a muchos).
gramática
FIND_IN_SET(str, strlist)
STR: cadena a buscar.
Strlist: lista que contiene múltiples cadenas separadas por comas.
muestra
Supongamos que hay una tabla llamada user que contiene una columna hobbies que almacena los hobbies del usuario, separados por comas.
SELECT * FROM users WHERE FIND_IN_SET('eat', hobbies) > 0;
precauciones
Rendimiento: el uso de FIND_IN_SET puede causar problemas de rendimiento en grandes conjuntos de datos, ya que requiere escanear línea por línea y analizar cadenas separadas por comas.
Por ejemplo, FIND_IN_SET no se puede usar en un índice, lo que significa que las consultas pueden no ser capaces de aprovechar el índice para acelerar la recuperación de datos.
La normalización de datos: una mejor práctica es normalizar este campo multivalor, por ejemplo creando una nueva tabla user_hobbies con los campos user_id y hobby, cada hobby de cada usuario ocupa una línea. Esto permite el uso de operaciones de unión SQL estándar, y el uso de índices para mejorar el rendimiento de las consultas.
En general, aunque FIND_IN_SET puede ser útil en algunos casos, es mejor evitar el uso de cadenas separadas por comas para almacenar múltiples valores al diseñar su base de datos. En su lugar, adopte un enfoque más normalizado.
© CopyRight 2018-2025, Tool.hadsky.com