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

A diferença entre FIELD() e FIND_IN_SET() no MySQL


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 |
+--------+