sql >> Base de Datos >  >> RDS >> MariaDB

MariaDB FIELD() vs FIND_IN_SET():¿Cuál es la diferencia?

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).