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

MySQL — Uzyskaj pierwsze 3 wartości oddzielone przecinkami

Możesz użyć SUBSTRING_INDEX dwa razy, drugi z 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

Jeśli parametr jest ujemny, zwracane jest wszystko na prawo od końcowego ogranicznika (licząc od prawej). Np.

  • SUBSTRING_INDEX('aaaaa, bbbbb, ccccc', ',', 2) zwróci aaaaa, bbbbb
  • SUBSTRING_INDEX( aaaaa, bbbbb, ',', -1) zwróci bbbbb

Możesz również użyć znaku „,” jako ogranicznika lub PRZYCINANIE wynik.

Zobacz skrzypce tutaj .

Edytuj

Jeśli chcesz wziąć pod uwagę ciągi, które mogą mieć mniej niż trzy wartości, możesz użyć czegoś takiego:

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

Zobacz skrzypce tutaj .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Escape string Python dla MySQL

  2. Zapytanie GTFS, aby wyświetlić wszystkie godziny odjazdów i przylotów między dwoma nazwami przystanków

  3. Spring Mvc Hibernate Encoding/Multi-line import sql

  4. Czy powinienem używać ON DELETE CASCADE, :dependent => :destroy, czy obu?

  5. mySQL Zwraca top 5 z każdej kategorii