2012-12-06 33 views
0

一个结果列我有这样一个表:如何分割在多个列

id ip 
-- ----------- 
1 192.168.2.1 

,需要得到这样的结果:

id ip   A B C D 
-- ----------- --- --- --- --- 
1 192.168.2.1 192 168 2 1 

可行?

+0

的可能重复的[分手数据转换成在MySQL列](HTTP://计算器。 COM /问题/ 10985085 /分解数据到列中的mysql) – Kermit

+0

看到类似的问题[这里](http://stackoverflow.com/questions/2412895/parse-results-in-mysql-via-regex) – Mike

回答

2
SELECT `id`, `ip`, 
    SUBSTRING_INDEX(`ip` , '.', 1) AS a, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(`ip` , '.', 2),'.',-1) AS b, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(`ip` , '.', -2),'.',1) AS c, 
    SUBSTRING_INDEX(`ip` , '.', -1) AS d 
FROM unicorns 

Source

SET @ip = '192.168.1.1'; 

SELECT @ip, 
    SUBSTRING_INDEX(@ip , '.', 1) AS a, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(@ip , '.', 2),'.',-1) AS b, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(@ip , '.', -2),'.',1) AS c, 
    SUBSTRING_INDEX(@ip , '.', -1) AS d 

结果

|   @IP | A | B | C | D | 
----------------------------------- 
| 192.168.1.1 | 192 | 168 | 1 | 1 |