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'