sql >> Databasteknik >  >> RDS >> Mysql

Hämta enstaka objekt från en liststräng i MySQL

Det finns ingen inbyggd funktion för detta. Du kan använda två SUBSTRING_INDEX-funktioner. Och du måste kontrollera om det specifika indexobjektet finns:

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) returnerar delsträngen från strängen @string före @n förekomster av @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) returnerar allt till höger om den slutliga avgränsaren
  • du måste kontrollera om avgränsare @n existerar. Vi kan subtrahera längden på strängen med avgränsaren och strängen med avgränsaren borttagen - med REPLACE(@string, @delimiter, '') - och se om den är större än @n*CHAR_LENGTH(@delimiter)-1


  1. Vanliga fel vid migrering av PostgreSQL-databaser från On-Prem till AWS RDS

  2. Beräkna InnoDB buffertpoolstorlek för din MySQL-server

  3. Hur man visar förloppsindikator medan man kör stora SQLCommand VB.Net

  4. Mysql-arrayen fungerar inte