Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir un seul élément d'une chaîne de liste dans MySQL

Il n'y a pas de fonction native pour cela. Vous pouvez utiliser deux fonctions SUBSTRING_INDEX. Et vous devez vérifier si cet élément d'index spécifique existe :

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) renvoie la sous-chaîne de la chaîne @string avant @n occurrences du @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) renvoie tout à droite du délimiteur final
  • vous devez vérifier si le délimiteur @n existe. Nous pouvons soustraire la longueur de la chaîne avec le délimiteur et la chaîne avec le délimiteur supprimé - en utilisant REPLACE(@string, @delimiter, '') - et voir s'il est supérieur à @n*CHAR_LENGTH(@delimiter)-1