sql >> Database >  >> RDS >> Mysql

Hoe de positie van een lijstitem in MySQL te retourneren

In MySQL kunt u de FIND_IN_SET() . gebruiken functie om de index van een gegeven lijstitem binnen een stringlijst te retourneren (bijvoorbeeld 'item1, item2, item3,...').

De functie heeft twee argumenten; de string om te zoeken, en de lijst om te zoeken.

De syntaxis gaat als volgt:

FIND_IN_SET(str,strlist)

Waar str is de string die je zoekt, en strlist is de lijst met tekenreeksen om door te zoeken.

Voorbeeld

Hier is een voorbeeld:

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

Resultaat:

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

Dit retourneert 2 want dat is de positie van de string Dog binnen de tekenreekslijst.

Merk op dat alleen de index van het eerste exemplaar wordt geretourneerd. Dus als Dog nog een keer voorkomt, na die eerste zouden we nog steeds hetzelfde resultaat krijgen:

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

Resultaat:

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

Geen overeenkomsten

Als de tekenreeks niet wordt gevonden, een resultaat van 0 wordt geretourneerd:

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

Resultaat:

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

Wat als het eerste argument een komma bevat?

De functie geeft geen positief resultaat als het eerste argument een komma bevat.

Hier is een voorbeeld:

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

Resultaat:

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

In dit voorbeeld zou je kunnen verwachten dat het een positief resultaat oplevert (gezien Cat,Dog staat in de lijst), maar de komma wordt gebruikt als scheidingsteken in de lijst en daarom werkt de tekenreeksovereenkomst niet.

Zie ook Hoe u de positie van een argument binnen een lijst met argumenten kunt retourneren met behulp van het FIELD() functie.


  1. resultaatset van functie retourneren

  2. Lange strings in N-Hibernate met Oracle veroorzaken fout

  3. Voeg alle waarden van een tabel in een andere tabel in SQL in

  4. AT TIME ZONE gebruiken om een ​​oud rapport te herstellen