MySQL按字符串分割字符串

时间:2016-12-26 17:12:42

标签: 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 - < s1,s2,s3,s4 = 1“。 e1.e2.e3.e4。

我想在非“example_ip_db”表中添加“county”列。 像“count(*)as'amount'”这样的列。

我怎样才能拆分ip呢?喜欢php> IP [0],IP [1],IP [1],IP [3]

2 个答案:

答案 0 :(得分: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('myid@domain.com', '@', -1);
      -> domain.com
 mysql> SELECT SUBSTRING_INDEX('myid@domain.com', '@', 1);
      -> myid 

See it more detail

答案 1 :(得分: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