sql >> Base de Datos >  >> RDS >> Mysql

Obtenga un solo elemento de una cadena de lista en MySQL

No hay una función nativa para esto. Puede utilizar dos funciones SUBSTRING_INDEX. Y debe verificar si ese elemento 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) devuelve la subcadena de la cadena @string antes de @n ocurrencias de @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) devuelve todo a la derecha del delimitador final
  • debe verificar si el delimitador @n existe Podemos restar la longitud de la cadena con el delimitador y la cadena con el delimitador eliminado, usando REPLACE(@string, @delimiter, '') - y ver si es mayor que @n*CHAR_LENGTH(@delimiter)-1