2016-12-26 69 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

不客氣! , 謝謝。 –