Dos funciones similares en MariaDB son FIELD()
y FIND_IN_SET()
. A primera vista, parecen hacer lo mismo, pero hay una diferencia.
Este artículo analiza la diferencia entre estas dos funciones.
Sintaxis y Definiciones
Primero, veamos la sintaxis y definición de cada función:
Función | Sintaxis | Definición |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | Devuelve la posición de índice de la cadena o el número que coincide con el patrón dado. |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | Devuelve la posición del índice donde aparece el patrón dado en una lista de cadenas. |
Ambas funciones aceptan un pattern
como su primer argumento. Sin embargo, es lo que viene a continuación lo que resalta sus diferencias:
FIELD()
acepta una o más cadenas, separadas por una coma.FIND_IN_SET()
acepta una sola lista de cadenas.
Ejemplo
Aquí hay un ejemplo que demuestra la diferencia entre estas dos funciones:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
Resultado:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
Cada función devolvió el mismo resultado, pero cada función aceptó las cadenas en un formato diferente.
Los valores proporcionados a FIELD()
vino como tres argumentos separados, mientras que los valores proporcionados a FIND_IN_SET()
vino como una lista de una sola cadena (que contenía los valores separados).