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

Sådan fungerer FIELD() i MariaDB

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'

  1. OPDATERING med CASE og IN - Oracle

  2. Få advarsel:Nulværdi elimineres af en samlet eller anden SET-operation

  3. java.sql.SQLEundtagelse:Ingen passende driver fundet til jdbc:mysql://localhost:3306/dbname

  4. EXP() Eksempler i SQL Server