I MariaDB, FIELD()
er en indbygget strengfunktion, der returnerer indekspositionen for strengen eller tallet, der matcher det angivne mønster.
Den accepterer to eller flere argumenter. Det første er det mønster, du vil søge efter. Alle efterfølgende argumenter er de strenge eller tal, som mønsteret skal matches med.
Syntaks
Syntaksen ser sådan ud:
FIELD(pattern, str1[,str2,...])
Hvor pattern
er mønsteret, og str1[, str2,…]
repræsenterer strengene eller tallene.
Eksempel
Her er et grundlæggende eksempel:
SELECT FIELD('Green', 'Red', 'Green', 'Blue');
Resultat:
+----------------------------------------+ | FIELD('Green', 'Red', 'Green', 'Blue') | +----------------------------------------+ | 2 | +----------------------------------------+
I dette tilfælde er mønsteret (Green
) forekommer på den anden position, og så 2
er returneret.
Skrivar og bogstaver
FIELD()
funktion behandler strenge som ufølsomme for store og små bogstaver.
Eksempel:
SELECT FIELD('BLUE', 'Red', 'Green', 'Blue');
Resultat:
+---------------------------------------+ | FIELD('BLUE', 'Red', 'Green', 'Blue') | +---------------------------------------+ | 3 | +---------------------------------------+
Ingen match
Hvis der ikke er noget match, 0
er returneret.
Eksempel:
SELECT FIELD('Go', 'Red', 'Green', 'Blue');
Resultat:
+-------------------------------------+ | FIELD('Go', 'Red', 'Green', 'Blue') | +-------------------------------------+ | 0 | +-------------------------------------+
Numre
Når alle argumenter er tal, behandles de som tal. Ellers behandles de som doubler.
Eksempel:
SELECT FIELD(3, 40, 2, 18, 10, 3);
Resultat:
+----------------------------+ | FIELD(3, 40, 2, 18, 10, 3) | +----------------------------+ | 5 | +----------------------------+
Flere match
Hvis der er flere matcher af mønsteret, returneres kun indekset for det første:
SELECT FIELD(3, 40, 3, 18, 10, 3);
Resultat:
+----------------------------+ | FIELD(3, 40, 3, 18, 10, 3) | +----------------------------+ | 2 | +----------------------------+
Angivelse af et nulmønster
Giver null
da det første argument resulterer i 0
:
SELECT FIELD(null, 1, 2, 3);
Resultat:
+----------------------+ | FIELD(null, 1, 2, 3) | +----------------------+ | 0 | +----------------------+
Giver kun ét strengargument
At angive et enkelt argument, der skal matche, er gyldigt:
SELECT FIELD(205, 205);
Resultat:
+-----------------+ | FIELD(205, 205) | +-----------------+ | 1 | +-----------------+
Enkelt argument
Men sender kun ét argument til FIELD()
returnerer en fejl:
SELECT FIELD(205);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'
Manglende argument
Kalder FIELD()
uden at sende nogen argumenter resulterer det i en fejl:
SELECT FIELD();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FIELD'