如何按逗号分割列的值?

时间:2017-07-23 05:33:14

标签: php mysql sql

我有一张这样的表:

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

value列的值始终由两部分组成,与,结合。现在我想在两个单独的列中选择它们,如下所示:

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

我该怎么做?

我可以通过PHP这样做:

-- query
SELECT id, value FROM mytable

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

但我想知道我可以在mysql中这样做吗?

2 个答案:

答案 0 :(得分:1)

为此,您可以使用函数INSTR()查找逗号的位置,然后使用LEFT()RIGHT()将这些列拆分为您需要的两列,如下所示:< / p>

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

答案 1 :(得分:0)

可以使用SUBSTRING_INDEX(string,delimiter,count)这样完成:

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