Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Holen Sie sich die ersten 3 kommagetrennten Werte

Sie könnten SUBSTRING_INDEX verwenden zweimal, der zweite mit -1 Parameter:

SELECT
  'aaaaa, bbbbb, ccccc',
  SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 1) AS column_one,
  SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2), ',', -1) AS column_two,
  SUBSTRING_INDEX(SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 3), ',', -1) AS column_three

Wenn der Parameter negativ ist, wird alles rechts vom letzten Trennzeichen (von rechts gezählt) zurückgegeben. Bsp.

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) gibt aaaaa, bbbbb zurück
  • SUBSTRING_INDEX( aaaaa, bbbbb, ',', -1) gibt dann bbbbb zurück

Sie können auch ', ' als Trennzeichen verwenden oder TRIM das Ergebnis.

Siehe fiddle hier .

Bearbeiten

Wenn Sie Zeichenfolgen berücksichtigen möchten, die möglicherweise weniger als drei Werte haben, können Sie Folgendes verwenden:

SELECT
  s,
  SUBSTRING_INDEX(s, ',', 1) AS column_one,
  CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>0
       THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 2), ',', -1)
       ELSE NULL END AS column_two,
  CASE WHEN LENGTH(s)-LENGTH(Replace(s, ',', ''))>1
       THEN SUBSTRING_INDEX(SUBSTRING_INDEX(s, ',', 3), ',', -1)
       ELSE NULL END AS column_three
FROM
  strings

Siehe fiddle hier .