sql >> Databasteknik >  >> RDS >> Mysql

Hur man återställer positionen för ett listobjekt i MySQL

I MySQL kan du använda FIND_IN_SET() funktion för att returnera indexet för ett givet listobjekt i en stränglista (till exempel 'item1, item2, item3,...').

Funktionen tar två argument; strängen för att hitta och listan för att söka.

Syntaxen ser ut så här:

FIND_IN_SET(str,strlist)

Där str är strängen du letar efter och strlist är stränglistan att söka igenom.

Exempel

Här är ett exempel:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      2 |
+--------+

Detta returnerar 2 eftersom det är positionen för strängen Dog i stränglistan.

Observera att endast indexet för den första förekomsten returneras. Så om det fanns en annan förekomst av Dog efter den första skulle vi fortfarande få samma resultat:

SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      2 |
+--------+

Inga matchningar

När strängen inte hittas, ett resultat av 0 returneras:

SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

Vad händer om det första argumentet innehåller ett kommatecken?

Funktionen returnerar inte ett positivt resultat om det första argumentet innehåller ett kommatecken.

Här är ett exempel:

SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';

Resultat:

+--------+
| Result |
+--------+
|      0 |
+--------+

I det här exemplet kan man förvänta sig att det ger ett positivt resultat (med tanke på Cat,Dog faktiskt finns i listan), men kommatecken används som avgränsare i listan, och därför fungerar inte strängmatchningen.

Se även Hur man returnerar ett arguments position i en lista med argument genom att använda FIELD() funktion.


  1. Halloweenproblemet – del 4

  2. Skala PostgreSQL med Connection Poolers &Load Balancers

  3. Postgres lösenordsautentisering misslyckas

  4. MySQL 'skapa schema' och 'skapa databas' - Finns det någon skillnad