Due funzioni simili in MariaDB sono FIELD()
e FIND_IN_SET()
. A prima vista, questi sembrano fare la stessa cosa, ma c'è una differenza.
Questo articolo esamina la differenza tra queste due funzioni.
Sintassi e definizioni
Per prima cosa, diamo un'occhiata alla sintassi e alla definizione di ciascuna funzione:
Funzione | Sintassi | Definizione |
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | Restituisce la posizione dell'indice della stringa o del numero che corrisponde al modello dato. |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | Restituisce la posizione dell'indice in cui il modello specificato si trova in un elenco di stringhe. |
Entrambe le funzioni accettano un pattern
come loro primo argomento. Tuttavia, è ciò che viene dopo che mette in evidenza le loro differenze:
FIELD()
accetta una o più stringhe, separate da una virgola.FIND_IN_SET()
accetta un singolo elenco di stringhe.
Esempio
Ecco un esempio che dimostra la differenza tra queste due funzioni:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
Risultato:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
Ogni funzione ha restituito lo stesso risultato, ma ogni funzione ha accettato le stringhe in un formato diverso.
I valori forniti a FIELD()
è venuto come tre argomenti separati, mentre i valori forniti a FIND_IN_SET()
è venuto come un singolo elenco di stringhe (che conteneva i valori separati).