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

Cómo devolver la posición de un argumento dentro de una lista de argumentos en MySQL

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.