Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So geben Sie die Position eines Listenelements in MySQL zurück

In MySQL können Sie den FIND_IN_SET() verwenden Funktion, um den Index eines bestimmten Listenelements innerhalb einer Zeichenfolgenliste zurückzugeben (z. B. „Element1, Element2, Element3, …“).

Die Funktion nimmt zwei Argumente entgegen; die zu suchende Zeichenfolge und die zu durchsuchende Liste.

Die Syntax lautet wie folgt:

FIND_IN_SET(str,strlist)

Wobei str ist die Zeichenfolge, nach der Sie suchen, und strlist ist die Zeichenfolgenliste, die durchsucht werden soll.

Beispiel

Hier ist ein Beispiel:

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

Ergebnis:

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

Dies gibt 2 zurück denn das ist die Position des Strings Dog innerhalb der Stringliste.

Beachten Sie, dass nur der Index des ersten Vorkommens zurückgegeben wird. Wenn also Dog noch einmal vorkommt nach dem ersten erhalten wir immer noch das gleiche Ergebnis:

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

Ergebnis:

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

Keine Übereinstimmungen

Wenn die Zeichenfolge nicht gefunden wird, ein Ergebnis von 0 wird zurückgegeben:

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

Ergebnis:

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

Was ist, wenn das erste Argument ein Komma enthält?

Die Funktion gibt kein positives Ergebnis zurück, wenn das erste Argument ein Komma enthält.

Hier ist ein Beispiel:

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

Ergebnis:

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

In diesem Beispiel könnte man erwarten, dass es ein positives Ergebnis zurückgibt (bei Cat,Dog tatsächlich in der Liste enthalten ist), jedoch wird das Komma als Trennzeichen in der Liste verwendet, und daher funktioniert der Zeichenfolgenabgleich nicht.

Siehe auch So geben Sie die Position eines Arguments innerhalb einer Liste von Argumenten zurück, indem Sie FIELD() verwenden Funktion.