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'