En MySQL, puede usar FIND_IN_SET()
función para devolver el índice de un elemento de lista dado dentro de una lista de cadenas (por ejemplo, 'elemento1, elemento2, elemento3,...').
La función toma dos argumentos; la cadena a buscar y la lista a buscar.
La sintaxis es así:
FIND_IN_SET(str,strlist)
Donde str
es la cadena que está buscando y strlist
es la lista de cadenas para buscar.
Ejemplo
He aquí un ejemplo:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+
Esto devuelve 2
porque esa es la posición de la cadena Dog
dentro de la lista de cadenas.
Tenga en cuenta que solo se devuelve el índice de la primera aparición. Entonces, si hubiera otra ocurrencia de Dog
después de ese primero, obtendríamos el mismo resultado:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+
Sin coincidencias
Cuando no se encuentra la cadena, un resultado de 0
se devuelve:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
¿Qué sucede si el primer argumento contiene una coma?
La función no devolverá un resultado positivo si el primer argumento contiene una coma.
He aquí un ejemplo:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
En este ejemplo, se podría esperar que arrojara un resultado positivo (dado Cat,Dog
está realmente en la lista), sin embargo, la coma se usa como separador en la lista y, por lo tanto, la coincidencia de cadenas no funciona.
Consulte también Cómo devolver la posición de un argumento dentro de una lista de argumentos usando FIELD()
función.