sql >> Database >  >> RDS >> Mysql

MySQL - Ontvang de eerste 3 door komma's gescheiden waarden

Je zou SUBSTRING_INDEX kunnen gebruiken tweemaal, de tweede met -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

Als de parameter negatief is, wordt alles rechts van het laatste scheidingsteken (vanaf rechts geteld) geretourneerd. Bijv.

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) retourneert aaaaa, bbbbb
  • SUBSTRING_INDEX( aaaaaa, bbbbb, ',', -1) retourneert dan bbbbb

U kunt ook ', ' als scheidingsteken gebruiken, of TRIM het resultaat.

Zie fiddle hier .

Bewerken

Als u tekenreeksen wilt overwegen die minder dan drie waarden kunnen hebben, kunt u zoiets als dit gebruiken:

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

Zie fiddle hier .




  1. Kolomalias gebruiken in dezelfde SELECT-clausule

  2. Een lijst met beschikbare verzamelingen retourneren in PostgreSQL

  3. Navicat voor MySQL

  4. MySQL:meerdere velden selecteren in meerdere variabelen in een opgeslagen procedure