No MariaDB,
FIND_IN_SET()
é uma função de string interna que retorna a posição do índice em que o padrão especificado ocorre na lista de strings especificada. Aceita dois argumentos. O primeiro é o padrão que você deseja pesquisar. O segundo argumento é uma string contendo valores separados por vírgulas para os quais corresponder ao padrão.
Sintaxe
A sintaxe fica assim:
FIND_IN_SET(pattern, strlist)
Onde
pattern
é o padrão que você deseja pesquisar e strlist
representa a sequência de valores separados por vírgula a serem pesquisados. Exemplo
Segue um exemplo básico:
SELECT FIND_IN_SET('Green', 'Red,Green,Blue');
Resultado:
+----------------------------------------+ | FIND_IN_SET('Green', 'Red,Green,Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
Neste caso, o padrão (
Green
) ocorre na segunda posição e, portanto, 2
é devolvido. Sem correspondência
Se não houver correspondência,
0
é devolvido. Exemplo:
SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');
Resultado:
+---------------------------------------+ | FIND_IN_SET('Nope', 'Red,Green,Blue') | +---------------------------------------+ | 0 | +---------------------------------------+
Várias correspondências
Se houver várias correspondências, apenas o índice da primeira será retornado:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');
Resultado:
+-------------------------------------------+ | FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') | +-------------------------------------------+ | 2 | +-------------------------------------------+
Especificando um padrão nulo
Fornecendo
null
pois o primeiro argumento resulta em null
sendo devolvido:SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');
Resultado:
+----------------------------------+ | FIND_IN_SET(null, 'Cat,Dog,Cat') | +----------------------------------+ | NULL | +----------------------------------+
Especificando uma lista de strings nulas
Fornecendo
null
como o segundo argumento também resulta em null
:SELECT FIND_IN_SET('Dog', null);
Resultado:
+--------------------------+ | FIND_IN_SET('Dog', null) | +--------------------------+ | NULL | +--------------------------+
Lista de strings vazia
Se a lista de strings estiver vazia,
FIND_IN_SET()
retorna 0
:SELECT FIND_IN_SET('Dog', '');
Resultado:
+------------------------+ | FIND_IN_SET('Dog', '') | +------------------------+ | 0 | +------------------------+
Vírgula no padrão
FIND_IN_SET()
não retorna o resultado correto se o padrão contiver uma vírgula:SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');
Resultado:
+-----------------------------------------+ | FIND_IN_SET('Green,', 'Red,Green,Blue') | +-----------------------------------------+ | 0 | +-----------------------------------------+
Argumento único
Passando apenas um argumento para
FIND_IN_SET()
retorna um erro:SELECT FIND_IN_SET('Cat');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'
Argumento ausente
Chamando
FIND_IN_SET()
sem passar nenhum argumento resulta em um erro:SELECT FIND_IN_SET();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'