MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como FIND_IN_SET() funciona no MariaDB


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'