In MySQL, puoi usare FIELD()
funzione per restituire la posizione di una determinata stringa o numero all'interno di un elenco di argomenti. La funzione restituisce l'indice (posizione) del primo argomento nell'elenco degli argomenti successivi.
La sintassi è questa:
FIELD(str,str1,str2,str3,...)
Dove str
è l'elemento che vuoi trovare e str1,str2,str3,...
è l'elenco che stai cercando.
Ecco un esempio:
SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';
Risultato:
+-----------------+ | Where is Homer? | +-----------------+ | 2 | +-----------------+
In questo esempio, l'elenco è:'Marge', 'Homer', 'Bart'
e stiamo cercando la stringa Homer
all'interno di tale elenco. E perché Homer
è il 2° elemento nell'elenco degli argomenti, il risultato è 2
.
Corrispondenza esatta
Nota che deve essere una corrispondenza esatta, altrimenti restituirà 0
.
Ad esempio, se eliminiamo r
da Homer
, finiamo per cercare Home
invece:
SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';
Risultato:
+-----------------+ | Where is Home? | +-----------------+ | 0 | +-----------------+
In questo caso, anche se Homer
contiene Home
, non è una corrispondenza esatta e il risultato è 0
.
Numeri
Il FIELD()
la funzione funziona anche con i numeri:
SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';
Risultato:
+-------------+ | Where is 1? | +-------------+ | 3 | +-------------+
Quando tutti gli argomenti su FIELD()
sono numeri, tutti gli argomenti vengono confrontati come numeri. Se sono tutte stringhe, vengono confrontate come stringhe. Se sono misti, vengono confrontati come doppi.
Il FIELD()
la funzione è un complemento di ELT()
funzione, che consente di trovare una voce dell'elenco in base alla sua posizione nell'elenco.
Vedi anche Come restituire la posizione di un elemento dell'elenco utilizzando il FIND_IN_SET()
funzione.