Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha um único item de uma string de lista no MySQL


Não há função nativa para isso. Você pode usar duas funções SUBSTRING_INDEX. E você precisa verificar se esse item de índice específico 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) retorna a substring da string @string antes de @n ocorrências do @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) retorna tudo à direita do delimitador final
  • você precisa verificar se o delimitador @n existe. Podemos subtrair o comprimento da string com o delimitador e a string com o delimitador removido - usando REPLACE(@string, @delimiter, '') - e veja se é maior que @n*CHAR_LENGTH(@delimiter)-1