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.