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

MySQL - Získejte první 3 hodnoty oddělené čárkou

Můžete použít SUBSTRING_INDEX dvakrát, druhý s parametrem -1:

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

Pokud je parametr záporný, vrátí se vše napravo od konečného oddělovače (počítáno zprava). Např.

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) vrátí aaaaa, bbbbb
  • SUBSTRING_INDEX( aaaaa, bbbbb, ',', -1) poté vrátí bbbbb

Můžete také chtít použít ', ' jako oddělovač nebo TRIM výsledek.

Viz housle zde .

Upravit

Pokud chcete uvažovat o řetězcích, které mohou mít méně než tři hodnoty, můžete použít něco takového:

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

Viz housle zde .




  1. Minimální úrovně přístupu ke spuštění uložené procedury MySql

  2. Potřebuji změnit formát data pomocí php

  3. DATETIMEOFFSETFROMPARTS() Příklady v SQL Server (T-SQL)

  4. Chyba PDO - Výjimka PDO' se zprávou 'SQLSTATE[HY000]:Obecná chyba'