MySQL include un FIELD()
funzione e un FIND_IN_SET()
funzione che entrambi restituiscono la posizione di una stringa all'interno di un elenco. Tuttavia, queste funzioni funzionano in modo leggermente diverso l'una dall'altra.
La principale differenza tra queste due funzioni è questa:
FIND_IN_SET()
restituisce la posizione dell'indice di una stringa all'interno di un elenco di stringhe.FIELD()
restituisce la posizione dell'indice di una stringa all'interno di un elenco di argomenti.
Quindi una funzione cerca in un elenco di stringhe e l'altra funzione cerca un elenco di argomenti .
Sintassi
Per prima cosa osserviamo la sintassi delle due funzioni:
CAMPO()
La sintassi per FIELD()
la funzione va così:
FIELD(str,str1,str2,str3,...)
Consiste in un argomento iniziale, seguito da più argomenti successivi. Gli argomenti successivi sono quelli che vengono cercati, per quanti ce ne siano.
TROVA_IN_SET()
La sintassi per FIND_IN_SET()
la funzione va così:
FIND_IN_SET(str,strlist)
Questo consiste in un argomento iniziale, seguito da un altro argomento. Il secondo argomento contiene un elenco di stringhe da cercare.
Esempi
CAMPO()
Ecco un esempio di FIELD()
funzione in azione:
SELECT FIELD('horse', 'Cat','Dog','Horse') AS 'Result';
Risultato:
+--------+ | Result | +--------+ | 3 | +--------+
TROVA_IN_SET()
Ed ecco come il FIND_IN_SET()
la funzione verrebbe costruita per ottenere lo stesso risultato:
SELECT FIND_IN_SET('horse', 'Cat,Dog,Horse') AS 'Result';
Risultato:
+--------+ | Result | +--------+ | 3 | +--------+