2016-12-26 29 views
-2

我想添加一个临时列来查询。MySQL按字符分割字符串多部分

我有一个表 “example_ip_db”,含 “S1,S2,S3,S4,E1,E2,E3,E4,CC”

实施例条目IP范围[1.1.1.1 < - > 2.2。 2.2]国家“CN” “s1,s2,s3,s4 = 1”和“e1,e2,e3,e4 = 2”s1.s2.s3.s4 <→e1.e2.e3.e4。

我想向非“example_ip_db”表添加一列“县”。 “count(*)as'amount'”这样的列。

我该如何分割ip?像php> ip [0],ip [1],ip [2],ip [3]。

+0

请编辑您的帖子和表中的数据格式转换成表格形式。 – GurV

回答

0

在mysql中使用SUBSTRING()函数。

例如。

mysql> SELECT SUBSTRING('habonytest', -3); 
     -> est 
mysql> SELECT SUBSTRING('habonytest', -5, 2); 
     -> yt 
mysql> SELECT SUBSTRING('habonytest', FROM -5 FOR 4); 
     -> ytes 

另外mysql还有SUBSTRING_INDEX()函数。

例如:

mysql> SELECT SUBSTRING_INDEX('[email protected]', '@', -1); 
     -> domain.com 
mysql> SELECT SUBSTRING_INDEX('[email protected]', '@', 1); 
     -> myid 

See it more detail

0

谢谢! (Star_Man)

解决:

SELECT IP, SUBSTRING_INDEX(IP, '.', 1) AS part1, 
SUBSTRING_INDEX(SUBSTRING_INDEX(IP, '.', 2) , '.' , -1) AS part2, 
SUBSTRING_INDEX(SUBSTRING_INDEX(IP, '.' , -2) , '.', 1) AS part3, 
SUBSTRING_INDEX(IP, '.' , -1) AS part4, 
(SELECT `cc` 
FROM `example_ip_db` 
WHERE `s1` <= part1 
AND `e1` >= part1 
AND `s2` <= part2 
AND `e2` >= part2 
AND `s3` <= part3 
AND `e3` >= part3 
AND `s4` <= part4 
AND `e4` >= part4 
) AS CC 
FROM `example_saved_ip_from` 
WHERE 1 
+0

不客气! , 谢谢。 –