mysql 取IP段 mysql 取IP段比如:192.168.100.10取 192.168.10019.16.200.10取 19.16.200谢谢对的马上给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mysql> set @ip = '192.168.100.10';Query OK, 0 rows affected (0.00 sec)mysql> select substring_index(@ip,'.',3);+----------------------------+| substring_index(@ip,'.',3) |+----------------------------+| 192.168.100 |+----------------------------+1 row in set (0.00 sec) SELECT SUBSTRING_INDEX(IP,'.',3) AS IPFROM tb;-- 看看帮助 SUBSTRING_INDEX 如果格式格式:select SUBSTRING_INDEX('192.168.100.10','.',-1),SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-2),'.',1),SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-3),'.',1),SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-4),'.',1)否则建立临时表,字段ID,内容从1-100用SQL语句解决 三楼方法不对,直接用一楼就可以了。不过 19.16.200.10 的网络ID是 19.0.0.0 这是个A类网址。 如果考虑A,B,C的话,把一楼的改成如下即可。mysql> select ip, -> SUBSTRING_INDEX(IP,'.',CASE floor(SUBSTRING_INDEX(IP,'.',1)/64) -> WHEN 0 THEN 1 -> WHEN 1 THEN 1 -> WHEN 2 THEN 2 -> WHEN 3 THEN 3 -> END) AS NETID -> from tip;+----------------+-------------+| ip | NETID |+----------------+-------------+| 1.1.1.1 | 1 || 127.1.1.1 | 127 || 128.1.1.1 | 128.1 || 191.1.1.1 | 191.1 || 192.1.1.1 | 192.1.1 || 223.1.1.1 | 223.1.1 || 192.168.100.10 | 192.168.100 || 19.16.200.10 | 19 |+----------------+-------------+8 rows in set (0.00 sec)mysql> 呵呵,楼主是要取出3位select SUBSTRING_INDEX('192.168.100.10','.',3) 在phpmyadmin中如何给一个字段做成索引? 请问各位高手:MySQL 5.0版下的数据库能否导入到5.5版中 mysql4如何改编码 Resin下使用PHP,读取mysql数据库记录时中文乱码!!急~~ mysql语句是否有函数实现if...else...功能 排列重复的问题 MySQL里如何自动更新时间字段? MYSQL无法远程登录,是什么原因呢 mysql新建查询报错,求大神指导 C++查询MySQL数据出现问题,盼指教 请教ubuntu的mysql服务器分区方案 有没有什么办法将mysql datetime类型字段分为 一个date列和一个time列?
Query OK, 0 rows affected (0.00 sec)mysql> select substring_index(@ip,'.',3);
+----------------------------+
| substring_index(@ip,'.',3) |
+----------------------------+
| 192.168.100 |
+----------------------------+
1 row in set (0.00 sec)
SUBSTRING_INDEX(IP,'.',3) AS IP
FROM tb;
-- 看看帮助 SUBSTRING_INDEX
select SUBSTRING_INDEX('192.168.100.10','.',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-2),'.',1),
SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-3),'.',1),
SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.100.10','.',-4),'.',1)否则
建立临时表,字段ID,内容从1-100
用SQL语句解决
不过 19.16.200.10 的网络ID是 19.0.0.0 这是个A类网址。
如果考虑A,B,C的话,把一楼的改成如下即可。mysql> select ip,
-> SUBSTRING_INDEX(IP,'.',CASE floor(SUBSTRING_INDEX(IP,'.',1)/64)
-> WHEN 0 THEN 1
-> WHEN 1 THEN 1
-> WHEN 2 THEN 2
-> WHEN 3 THEN 3
-> END) AS NETID
-> from tip;
+----------------+-------------+
| ip | NETID |
+----------------+-------------+
| 1.1.1.1 | 1 |
| 127.1.1.1 | 127 |
| 128.1.1.1 | 128.1 |
| 191.1.1.1 | 191.1 |
| 192.1.1.1 | 192.1.1 |
| 223.1.1.1 | 223.1.1 |
| 192.168.100.10 | 192.168.100 |
| 19.16.200.10 | 19 |
+----------------+-------------+
8 rows in set (0.00 sec)mysql>
select SUBSTRING_INDEX('192.168.100.10','.',3)