No MariaDB,
FIELD()
é uma função de string interna que retorna a posição de índice da string ou número que corresponde ao padrão especificado. Aceita dois ou mais argumentos. O primeiro é o padrão que você deseja pesquisar. Todos os argumentos subsequentes são as strings ou números para os quais corresponder ao padrão.
Sintaxe
A sintaxe fica assim:
FIELD(pattern, str1[,str2,...])
Onde
pattern
é o padrão e str1[, str2,…]
representa as strings ou números. Exemplo
Segue um exemplo básico:
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
Resultado:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
Neste caso, o padrão (
Green
) ocorre na segunda posição e, portanto, 2
é devolvido. Sensibilidade de maiúsculas e minúsculas
O
FIELD()
A função trata strings como não diferenciando maiúsculas de minúsculas. Exemplo:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
Resultado:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
Sem correspondência
Se não houver correspondência,
0
é devolvido. Exemplo:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
Resultado:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
Números
Quando todos os argumentos são números, eles são tratados como números. Caso contrário, eles são tratados como duplos.
Exemplo:
SELECT FIELD(3, 40, 2, 18, 10, 3);
Resultado:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
Várias correspondências
Se houver várias correspondências do padrão, apenas o índice do primeiro será retornado:
SELECT FIELD(3, 40, 3, 18, 10, 3);
Resultado:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
Especificando um padrão nulo
Fornecendo
null
como o primeiro argumento resulta em 0
:SELECT FIELD(null, 1, 2, 3);
Resultado:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
Fornecendo apenas um argumento de string
Fornecer um único argumento para corresponder é válido:
SELECT FIELD(205, 205);
Resultado:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
Argumento único
Mas passando apenas um argumento para
FIELD()
retorna um erro:SELECT FIELD(205);
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
Argumento ausente
Chamando
FIELD()
sem passar nenhum argumento resulta em um erro:SELECT FIELD();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'