/ / Jak mogę podzielić wartość kolumny na przecinek? - php, mysql, sql

Jak mogę podzielić wartość kolumny na przecinek? - php, mysql, sql

Mam taką tabelę:

-- mytable
+----+------------+
| id |   value    |
+----+------------+
| 1  | one,ten    |
| 2  | nine,two   |
| 3  | five, one  |
+----+------------+

Wartość value kolumna jest zawsze wykonana z dwóch części, które są połączone ,. Teraz chcę je zaznaczyć w dwóch oddzielnych kolumnach:

-- expected result:
+----+-------+------+
| id | val1  | val2 |
+----+-------+------+
| 1  | one   | ten  |
| 2  | nine  | two  |
| 3  | five  | one  |
+----+-------+------+

Jak mogę to zrobić?


Mogę to zrobić przez PHP w następujący sposób:

-- query
SELECT id, value FROM mytable

-- then
$vals = explode(",", $rows["value"]);
foreach($vals as $val){
//do stuff
}

Ale chcę wiedzieć, czy można to zrobić w mysql?

Odpowiedzi:

1 dla odpowiedzi № 1

W tym celu możesz użyć funkcji INSTR() znaleźć pozycję przecinka, a następnie użyć LEFT() i RIGHT() aby podzielić je na dwie potrzebne kolumny, jak poniżej:

SELECT id
,LEFT(value,INSTR(value,",")-1) AS val1
,RIGHT(value,CHAR_LENGTH(value)-INSTR(value,",")-1) AS val2
FROM mytable

0 dla odpowiedzi nr 2

Można to zrobić za pomocą SUBSTRING_INDEX(string,delimiter,count) lubię to:

SELECT id,
SUBSTRING_INDEX(value,",", 1) as val1,
SUBSTRING_INDEX(value,",", -1) as val2
FROM mytable