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

Holen Sie sich ein einzelnes Element aus einer Listenzeichenfolge in MySQL

Dafür gibt es keine native Funktion. Sie können zwei SUBSTRING_INDEX-Funktionen verwenden. Und Sie müssen prüfen, ob dieses bestimmte Indexelement existiert:

SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;

SELECT
  CASE WHEN
    CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
    @n*CHAR_LENGTH(@delimiter)-1
  THEN
    SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
  END;
  • SUBSTRING_INDEX(@string, @delimiter, @n) gibt den Teilstring von String @string zurück vor @n Vorkommen des @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) gibt alles rechts vom letzten Trennzeichen zurück
  • Sie müssen prüfen, ob das Trennzeichen @n ist existiert. Wir können die Länge der Zeichenfolge mit dem Trennzeichen und der Zeichenfolge mit entferntem Trennzeichen subtrahieren - mit REPLACE(@string, @delimiter, '') - und prüfen Sie, ob es größer als @n*CHAR_LENGTH(@delimiter)-1 ist