Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobierz pojedynczy element z ciągu listy w MySQL

Nie ma do tego funkcji natywnej. Możesz użyć dwóch funkcji SUBSTRING_INDEX. I musisz sprawdzić, czy ten konkretny element indeksu istnieje:

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) zwraca podciąg z ciągu @string przed @n wystąpienia @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) zwraca wszystko na prawo od ostatniego ogranicznika
  • musisz sprawdzić, czy separator @n istnieje. Możemy odjąć długość ciągu z ogranicznikiem i ciągu z usuniętym ogranicznikiem - używając REPLACE(@string, @delimiter, '') - i zobacz, czy jest większe niż @n*CHAR_LENGTH(@delimiter)-1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Wiele-do-wielu Wybierz

  2. Korzystanie z IF EXISTS w MySQL

  3. Operator „<” jest zarezerwowany Błąd programu PowerShell

  4. mysql z wartościami oddzielonymi przecinkami

  5. Wydrukuj losowy wiersz z zapytania mysql