sql >> Database >  >> RDS >> Mysql

Haal een enkel item uit een lijstreeks in MySQL

Hier is geen native functie voor. U kunt twee SUBSTRING_INDEX-functies gebruiken. En u moet controleren of dat specifieke indexitem bestaat:

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) retourneert de substring van string @string voor @n exemplaren van de @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) geeft alles rechts van het laatste scheidingsteken terug
  • je moet controleren of het scheidingsteken @n bestaat. We kunnen de lengte van de tekenreeks aftrekken met het scheidingsteken en de tekenreeks met het scheidingsteken verwijderd - met behulp van REPLACE(@string, @delimiter, '') - en kijk of het groter is dan @n*CHAR_LENGTH(@delimiter)-1


  1. Django-databaselaag gebruiken buiten Django?

  2. Overwegingen met betrekking tot gegevensintegriteit en prestatie in semisynchrone MySQL-replicatie

  3. Natuurlijk meedoen in SQL Server

  4. blob omzetten in clob