我有一张这样的表:
-- 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中这样做吗?
答案 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