Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como retornar a posição de um argumento em uma lista de argumentos no MySQL


No MySQL, você pode usar o FIELD() função para retornar a posição de uma determinada string ou número dentro de uma lista de argumentos. A função retorna o índice (posição) do primeiro argumento na lista de argumentos subsequentes.

A sintaxe fica assim:
FIELD(str,str1,str2,str3,...)

Onde str é o item que você quer encontrar e str1,str2,str3,... é a lista pela qual você está pesquisando.

Aqui está um exemplo:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';

Resultado:
+-----------------+
| Where is Homer? |
+-----------------+
|               2 |
+-----------------+

Neste exemplo, a lista é:'Marge', 'Homer', 'Bart' e estamos procurando a string Homer dentro dessa lista. E porque Homer é o 2º item na lista de argumentos, o resultado é 2 .


Correspondência exata


Observe que deve ser uma correspondência exata, caso contrário, retornará 0 .

Por exemplo, se descartarmos o r de Homer , acabamos procurando por Home em vez de:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';

Resultado:
+-----------------+
| Where is Home? |
+-----------------+
|               0 |
+-----------------+

Neste caso, embora Homer contém Home , não é uma correspondência exata e o resultado é 0 .

 Números


O FIELD() A função também funciona com números:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';

Resultado:
+-------------+
| Where is 1? |
+-------------+
|           3 |
+-------------+

Quando todos os argumentos para FIELD() são números, todos os argumentos são comparados como números. Se todos são strings, eles são comparados como strings. Se forem misturados, são comparados como duplos.

O FIELD() função é um complemento para o ELT() função, que permite localizar um item de lista por sua posição na lista.

Consulte também Como retornar a posição de um item de lista usando o FIND_IN_SET() função.