MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona FIELD() in MariaDB

In MariaDB, FIELD() è una funzione stringa incorporata che restituisce la posizione dell'indice della stringa o del numero che corrisponde al modello specificato.

Accetta due o più argomenti. Il primo è il modello che vuoi cercare. Tutti gli argomenti successivi sono le stringhe oi numeri per i quali confrontare il modello.

Sintassi

La sintassi è questa:

FIELD(pattern, str1[,str2,...])

Dove pattern è il modello e str1[, str2,…] rappresenta le stringhe o i numeri.

Esempio

Ecco un esempio di base:

SELECT FIELD('Green', 'Red', 'Green', 'Blue');

Risultato:

+----------------------------------------+
| FIELD('Green', 'Red', 'Green', 'Blue') |
+----------------------------------------+
|                                      2 |
+----------------------------------------+

In questo caso, il pattern (Green ) compare nella seconda posizione, quindi 2 viene restituito.

Maiuscole/minuscole

Il FIELD() la funzione considera le stringhe senza distinzione tra maiuscole e minuscole.

Esempio:

SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');

Risultato:

+---------------------------------------+
| FIELD('BLUE', 'Red', 'Green', 'Blue') |
+---------------------------------------+
|                                     3 |
+---------------------------------------+

Nessuna corrispondenza

Se non c'è corrispondenza, 0 viene restituito.

Esempio:

SELECT FIELD('Go', 'Red', 'Green', 'Blue');

Risultato:

+-------------------------------------+
| FIELD('Go', 'Red', 'Green', 'Blue') |
+-------------------------------------+
|                                   0 |
+-------------------------------------+

Numeri

Quando tutti gli argomenti sono numeri, vengono trattati come numeri. Altrimenti vengono trattati come doppi.

Esempio:

SELECT FIELD(3, 40, 2, 18, 10, 3);

Risultato:

+----------------------------+
| FIELD(3, 40, 2, 18, 10, 3) |
+----------------------------+
|                          5 |
+----------------------------+

Partite multiple

Se sono presenti più corrispondenze del pattern, viene restituito solo l'indice del primo:

SELECT FIELD(3, 40, 3, 18, 10, 3);

Risultato:

+----------------------------+
| FIELD(3, 40, 3, 18, 10, 3) |
+----------------------------+
|                          2 |
+----------------------------+

Specifica di un modello nullo

Fornendo null poiché il primo argomento risulta in 0 :

SELECT FIELD(null, 1, 2, 3);

Risultato:

+----------------------+
| FIELD(null, 1, 2, 3) |
+----------------------+
|                    0 |
+----------------------+

Fornire un solo argomento di stringa

È valido fornire un singolo argomento per la corrispondenza:

SELECT FIELD(205, 205);

Risultato:

+-----------------+
| FIELD(205, 205) |
+-----------------+
|               1 |
+-----------------+

Singolo argomento

Ma passando un solo argomento a FIELD() restituisce un errore:

SELECT FIELD(205);

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'

Argomento mancante

Chiamando FIELD() senza passare alcun argomento genera un errore:

SELECT FIELD();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'