MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona FIND_IN_SET() in MariaDB

In MariaDB, FIND_IN_SET() è una funzione di stringa incorporata che restituisce la posizione dell'indice in cui il modello specificato si trova nell'elenco di stringhe specificato.

Accetta due argomenti. Il primo è il modello che vuoi cercare. Il secondo argomento è una stringa contenente valori separati da virgole per i quali confrontare il modello.

Sintassi

La sintassi è questa:

FIND_IN_SET(pattern, strlist)

Dove pattern è il pattern che vuoi cercare e strlist rappresenta la stringa di valori separati da virgole da cercare.

Esempio

Ecco un esempio di base:

SELECT FIND_IN_SET('Green', 'Red,Green,Blue');

Risultato:

+----------------------------------------+
| FIND_IN_SET('Green', 'Red,Green,Blue') |
+----------------------------------------+
|                                      2 |
+----------------------------------------+

In questo caso, il pattern (Green ) compare nella seconda posizione, quindi 2 viene restituito.

Nessuna corrispondenza

Se non c'è corrispondenza, 0 viene restituito.

Esempio:

SELECT FIND_IN_SET('Nope', 'Red,Green,Blue');

Risultato:

+---------------------------------------+
| FIND_IN_SET('Nope', 'Red,Green,Blue') |
+---------------------------------------+
|                                     0 |
+---------------------------------------+

Partite multiple

Se sono presenti più corrispondenze, viene restituito solo l'indice della prima:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat');

Risultato:

+-------------------------------------------+
| FIND_IN_SET('Dog', 'Cat,Dog,Cat,Dog,Cat') |
+-------------------------------------------+
|                                         2 |
+-------------------------------------------+

Specifica di un modello nullo

Fornendo null poiché il primo argomento risulta null in fase di restituzione:

SELECT FIND_IN_SET(null, 'Cat,Dog,Cat');

Risultato:

+----------------------------------+
| FIND_IN_SET(null, 'Cat,Dog,Cat') |
+----------------------------------+
|                             NULL |
+----------------------------------+

Specifica di un elenco di stringhe nulle

Fornendo null poiché anche il secondo argomento risulta null :

SELECT FIND_IN_SET('Dog', null);

Risultato:

+--------------------------+
| FIND_IN_SET('Dog', null) |
+--------------------------+
|                     NULL |
+--------------------------+

Elenco stringhe vuoto

Se l'elenco delle stringhe è vuoto, FIND_IN_SET() restituisce 0 :

SELECT FIND_IN_SET('Dog', '');

Risultato:

+------------------------+
| FIND_IN_SET('Dog', '') |
+------------------------+
|                      0 |
+------------------------+

Virgola nel modello

FIND_IN_SET() non restituisce il risultato corretto se il modello contiene una virgola:

SELECT FIND_IN_SET('Green,', 'Red,Green,Blue');

Risultato:

+-----------------------------------------+
| FIND_IN_SET('Green,', 'Red,Green,Blue') |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+

Singolo argomento

Passando un solo argomento a FIND_IN_SET() restituisce un errore:

SELECT FIND_IN_SET('Cat');

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'

Argomento mancante

Chiamando FIND_IN_SET() senza passare alcun argomento genera un errore:

SELECT FIND_IN_SET();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIND_IN_SET'