sql >> Base de Datos >  >> RDS >> Mysql

La diferencia entre FIELD() y FIND_IN_SET() en MySQL

MySQL incluye un FIELD() función y un FIND_IN_SET() función que devuelve la posición de una cadena dentro de una lista. Sin embargo, estas funciones funcionan de forma ligeramente diferente entre sí.

La principal diferencia entre estas dos funciones es esta:

  • FIND_IN_SET() devuelve la posición de índice de una cadena dentro de una lista de cadenas.
  • FIELD() devuelve la posición de índice de una cadena dentro de una lista de argumentos.

Así que una función busca una lista de cadenas , y la otra función busca una lista de argumentos .

Sintaxis

Primero veamos la sintaxis de las dos funciones:

CAMPO()

La sintaxis para FIELD() la función es así:

FIELD(str,str1,str2,str3,...)

Consiste en un argumento inicial, seguido de varios argumentos posteriores. Los argumentos subsiguientes son los que se buscan, sin importar cuántos de ellos haya.

FIND_IN_SET()

La sintaxis para FIND_IN_SET() la función es así:

FIND_IN_SET(str,strlist)

Consiste en un argumento inicial, seguido de un argumento más. El segundo argumento contiene una lista de cadenas para buscar.

Ejemplos

CAMPO()

Aquí hay un ejemplo de FIELD() función en acción:

SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';

Resultado:

+--------+
| Result |
+--------+
|      3 |
+--------+

FIND_IN_SET()

Y así es como FIND_IN_SET() la función se construiría para obtener el mismo resultado:

SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';

Resultado:

+--------+
| Result |
+--------+
|      3 |
+--------+