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

MariaDB FIELD() vs FIND_IN_SET():qual è la differenza?

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).