O MySQL inclui um
FIELD()
função e um FIND_IN_SET()
função que ambos retornam a posição de uma string dentro de uma lista. No entanto, essas funções funcionam de forma ligeiramente diferente entre si. A principal diferença entre essas duas funções é a seguinte:
FIND_IN_SET()
retorna a posição de índice de uma string dentro de uma lista de strings.FIELD()
retorna a posição de índice de uma string dentro de uma lista de argumentos.
Então, uma função pesquisa uma lista de strings , e a outra função pesquisa uma lista de argumentos .
Sintaxe
Primeiro vamos ver a sintaxe das duas funções:
CAMPO()
A sintaxe para o
FIELD()
função fica assim:FIELD(str,str1,str2,str3,...)
Isso consiste em um argumento inicial, seguido por vários argumentos subsequentes. Os argumentos subsequentes são os que são pesquisados – não importa quantos deles existam.
FIND_IN_SET()
A sintaxe para o
FIND_IN_SET()
função fica assim:FIND_IN_SET(str,strlist)
Este consiste em um argumento inicial, seguido por mais um argumento. O segundo argumento contém uma lista de strings a serem pesquisadas.
Exemplos
CAMPO()
Aqui está um exemplo do
FIELD()
função em ação:SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
FIND_IN_SET()
E aqui está como o
FIND_IN_SET()
função seria construída para obter o mesmo resultado:SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+