Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni un singolo elemento da una stringa di elenco in MySQL

Non esiste una funzione nativa per questo. Puoi utilizzare due funzioni SUBSTRING_INDEX. E devi verificare se esiste quell'elemento dell'indice specifico:

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) restituisce la sottostringa dalla stringa @string prima di @n occorrenze del @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) restituisce tutto a destra del delimitatore finale
  • devi controllare se il delimitatore @n esiste. Possiamo sottrarre la lunghezza della stringa con il delimitatore e la stringa con il delimitatore rimosso - usando REPLACE(@string, @delimiter, '') - e verifica se è maggiore di @n*CHAR_LENGTH(@delimiter)-1