sql >> Databasteknik >  >> RDS >> Mysql

Hur man returnerar ett arguments position i en lista med argument i MySQL

I MySQL kan du använda FIELD() funktion för att returnera positionen för en given sträng eller siffra i en lista med argument. Funktionen returnerar indexet (positionen) för det första argumentet i listan över efterföljande argument.

Syntaxen ser ut så här:

FIELD(str,str1,str2,str3,...)

Där str är objektet du vill hitta, och str1,str2,str3,... är listan du söker igenom.

Här är ett exempel:

SELECT FIELD('Homer', 'Marge', 'Homer', 'Bart') AS 'Where is Homer?';

Resultat:

+-----------------+
| Where is Homer? |
+-----------------+
|               2 |
+-----------------+

I det här exemplet är listan:'Marge', 'Homer', 'Bart' och vi söker efter strängen Homer inom den listan. Och eftersom Homer är det andra objektet i listan över argument, resultatet är 2 .

Exakt matchning

Observera att det måste vara en exakt matchning, annars returnerar den 0 .

Till exempel, om vi släpper r från Homer , slutar vi med att söka efter Home istället:

SELECT FIELD('Home', 'Marge', 'Homer', 'Bart') AS 'Where is Home?';

Resultat:

+-----------------+
| Where is Home? |
+-----------------+
|               0 |
+-----------------+

I det här fallet, även om Homer innehåller Home , det är inte en exakt matchning och resultatet är 0 .

 Siffror

FIELD() Funktionen fungerar även med siffror:

SELECT FIELD(1, 3, 2, 1) AS 'Where is 1?';

Resultat:

+-------------+
| Where is 1? |
+-------------+
|           3 |
+-------------+

När alla argument till FIELD() är tal, jämförs alla argument som tal. Om alla är strängar jämförs de som strängar. Om de är blandade jämförs de som dubbelt.

FIELD() funktionen är ett komplement till ELT() funktion, som låter dig hitta ett listobjekt efter dess position i listan.

Se även Hur du återställer positionen för ett listobjekt med FIND_IN_SET() funktion.


  1. När ska man använda SELECT ... FÖR UPPDATERING?

  2. Fix:"Okänd tabell 'locales' i informationsschema" i MariaDB

  3. Isoleringsnivån Läs oengagerad

  4. Felsökning av Microsoft SQL Server Error 18456