sql >> Databáze >  >> RDS >> Mysql

Získejte jednu položku z řetězce seznamu v MySQL

Neexistuje pro to žádná nativní funkce. Můžete použít dvě funkce SUBSTRING_INDEX. A musíte zkontrolovat, zda tato konkrétní položka indexu existuje:

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) vrátí podřetězec z řetězce @string před @n výskyty @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) vrátí vše napravo od koncového oddělovače
  • musíte zkontrolovat, zda oddělovač @n existuje. Můžeme odečíst délku řetězce s oddělovačem a řetězec s odstraněným oddělovačem - pomocí REPLACE(@string, @delimiter, '') - a zjistěte, zda je větší než @n*CHAR_LENGTH(@delimiter)-1


  1. Zkombinujte dotazy vnořené smyčky s výsledkem nadřazeného pole - pg-promise

  2. Vkládání dat do více tabulek pomocí jednoho formuláře

  3. Bind IS NULL nebo NULL při použití PHP PDO a MySql

  4. SQL vybrat n-tého člena skupiny