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'