sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Få de første 3 kommaseparerede værdier

Du kan bruge SUBSTRING_INDEX to gange, den anden med -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

Hvis parameteren er negativ, returneres alt til højre for den endelige afgrænsning (tæller fra højre). F.eks.

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) vil returnere aaaaa, bbbbb
  • SUBSTRING_INDEX( aaaaa, bbbbb, ',', -1) vil derefter returnere bbbbb

Du vil måske også bruge ', ' som afgrænsning eller TRIM resultatet.

Se venligst violin her .

Rediger

Hvis du vil overveje strenge, der kan have mindre end tre værdier, kan du bruge noget som dette:

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

Se venligst violin her .




  1. Lagring af EXIF-oplysninger i databasen

  2. Tilladt hukommelsesstørrelse på 8589934592 bytes opbrugt

  3. Brug af SQLAlchemy ORM til en ikke-primær nøgle, unik, auto-inkrementerende id

  4. Hvor dyre er implicitte konverteringer på kolonnesiden?