En MySQL, puede usar el FIELD()
función para devolver la posición de una cadena o número dado dentro de una lista de argumentos. La función devuelve el índice (posición) del primer argumento en la lista de argumentos posteriores.
La sintaxis es así:
FIELD(str,str1,str2,str3,...)
Donde str
es el elemento que desea buscar y str1,str2,str3,...
es la lista que está buscando.
He aquí un ejemplo:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Resultado:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
En este ejemplo, la lista es:'Marge', 'Homer', 'Bart'
y estamos buscando la cadena Homer
dentro de esa lista. Y porque Homer
es el segundo elemento en la lista de argumentos, el resultado es 2
.
Coincidencia exacta
Tenga en cuenta que debe ser una coincidencia exacta; de lo contrario, devolverá 0
.
Por ejemplo, si soltamos la r
de Homer
, terminamos buscando Home
en cambio:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Resultado:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
En este caso, aunque Homer
contiene Home
, no es una coincidencia exacta y el resultado es 0
.
Números
El FIELD()
La función también funciona con números:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Resultado:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Cuando todos los argumentos a FIELD()
son números, todos los argumentos se comparan como números. Si todos son cadenas, se comparan como cadenas. Si son mixtos, se comparan como dobles.
El FIELD()
La función es un complemento del ELT()
función, que le permite encontrar un elemento de la lista por su posición en la lista.
Consulte también Cómo devolver la posición de un elemento de lista mediante FIND_IN_SET()
función.