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

MariaDB FIELD() vs FIND_IN_SET():Hvad er forskellen?

To lignende funktioner i MariaDB er FIELD() og FIND_IN_SET() . Ved første øjekast ser disse ud til at gøre det samme, men der er en forskel.

Denne artikel ser på forskellen mellem disse to funktioner.

Syntaks og definitioner

Lad os først se på syntaksen og definitionen af ​​hver funktion:

Funktion Syntaks Definition
FIELD() FIELD(pattern, str1[,str2,...]) Returnerer indekspositionen for strengen eller tallet, der matcher det givne mønster.
FIND_IN_SET() FIND_IN_SET(pattern, strlist) Returnerer indekspositionen, hvor det givne mønster forekommer i en strengliste.

Begge funktioner accepterer et pattern som deres første argument. Det er dog det næste, der fremhæver deres forskelle:

  • FIELD() accepterer en eller flere strenge, adskilt af et komma.
  • FIND_IN_SET() accepterer en enkelt strengliste.

Eksempel

Her er et eksempel, der viser forskellen mellem disse to funktioner:

SELECT 
    FIELD('bat', 'cat','dog','bat') AS "FIELD()",
    FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";

Resultat:

+---------+---------------+
| FIELD() | FIND_IN_SET() |
+---------+---------------+
|       3 |             3 |
+---------+---------------+

Hver funktion returnerede det samme resultat, men hver funktion accepterede strengene i et andet format.

Værdierne givet til FIELD() kom som tre separate argumenter, hvorimod værdierne givet til FIND_IN_SET() kom som en enkelt strengliste (som indeholdt de separate værdier).


  1. Hvordan taler Access med ODBC-datakilder? Del 3

  2. Sådan installeres WordPress:Serversoftwaren

  3. Vælg rækker, der ikke er til stede i anden tabel

  4. Postgres mangler FROM-klausulindtastningsfejl på forespørgsel med WITH-klausul