MySQL中进行MySQL字符串操作以仅计算IP地址记录中的重复值的子部分?
对于这种字符串操作,需要使用MySQL SUBSTRING_INDEX()。首先创建一个表 −
mysql> create table DemoTable ( SystemIpAddress text ); Query OK, 0 rows affected (0.58 sec)
使用insert命令在表中插入一些记录 −
mysql> insert into DemoTable values('192.168.130.67'); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values('192.168.130.87'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values('192.168.131.47'); Query OK, 1 row affected (0.31 sec) mysql> insert into DemoTable values('192.168.134.50'); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values('192.168.131.12'); Query OK, 1 row affected (0.21 sec)
使用select语句显示表中的所有记录 −
mysql> select *from DemoTable ;
这将产生以下输出 −
+-----------------+ | SystemIpAddress | +-----------------+ | 192.168.130.67 | | 192.168.130.87 | | 192.168.131.47 | | 192.168.134.50 | | 192.168.131.12 | +-----------------+ 5 rows in set (0.00 sec)
以下是IP地址记录中进行字符串操作的查询 −
mysql> select substring_index(tbl.SystemIpAddress, '.', 3) , count(*) as Total from DemoTable tbl group by substring_index(tbl.SystemIpAddress, '.', 3) order by Total desc limit 5;
这将产生以下输出 −
+----------------------------------------------+-------+ | substring_index(tbl.SystemIpAddress, '.', 3) | Total | +----------------------------------------------+-------+ | 192.168.130 | 2 | | 192.168.131 | 2 | | 192.168.134 | 1 | +----------------------------------------------+-------+ 3 rows in set (0.00 sec)
广告