En MariaDB, FIND_IN_SET()
es una función de cadena integrada que devuelve la posición de índice donde aparece el patrón dado en la lista de cadenas especificada.
Acepta dos argumentos. El primero es el patrón que desea buscar. El segundo argumento es una cadena que contiene valores separados por comas con los que comparar el patrón.
Sintaxis
La sintaxis es así:
FIND_IN_SET(pattern, strlist)
Donde pattern
es el patrón que desea buscar y strlist
representa la cadena de valores separados por comas para buscar.
Ejemplo
He aquí un ejemplo básico:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Resultado:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
En este caso, el patrón (Green
) aparece en la segunda posición, por lo que 2
es devuelto.
Sin coincidencia
Si no hay ninguna coincidencia, 0
es devuelto.
Ejemplo:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Resultado:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Coincidencias Múltiples
Si hay varias coincidencias, solo se devuelve el índice de la primera:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Resultado:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Especificar un patrón nulo
Proporcionar null
ya que el primer argumento da como resultado null
siendo devuelto:
SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Resultado:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Especificar una lista de cadenas nulas
Proporcionar null
como el segundo argumento también da como resultado null
:
SELECT FIND_IN_SET('Dog', null);
Resultado:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Lista de cadenas vacías
Si la lista de cadenas está vacía, FIND_IN_SET()
devuelve 0
:
SELECT FIND_IN_SET('Dog', '');
Resultado:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Coma en el Patrón
FIND_IN_SET()
no devuelve el resultado correcto si el patrón contiene una coma:
SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Resultado:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Argumento único
Pasar solo un argumento a FIND_IN_SET()
devuelve un error:
SELECT FIND_IN_SET('Cat');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Argumento faltante
Llamando a FIND_IN_SET()
sin pasar ningún argumento da como resultado un error:
SELECT FIND_IN_SET();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'