Mysql
 sql >> Database >  >> RDS >> Mysql

Come restituire la posizione di un argomento all'interno di un elenco di argomenti in MySQL

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.