求一MYSQL存储过程

yyhakusu 2009-09-23 10:12:08
表结构如下:

begin_ip end_ip add1 add2
------------------------------------------------------------------------
194.77.0.0 194.77.255.255 德国 无具体地点
194.78.99.80 194.78.99.95 比利时 BOSTON UNIVERSITY
......

初涉mysql,求一存储过程,根据传入的IP,找出对应的地址(add1+add2),表中begin_ip表示起始IP,end_ip表示终止IP ,两者组成一个IP段。
比如传入的是 194.77.0.123,那么返回值就是 “德国 无具体地点”,如果传入的是 194.78.99.85 那么返回值是 “比利时BOSTON UNIVERSITY”,如果传入的IP没找到,就返回“暂无此IP信息”
不知道我的表述是否清楚,还请各位高手赐教!谢谢
...全文
66 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony_413 2009-09-24
  • 打赏
  • 举报
回复
学习了
yyhakusu 2009-09-24
  • 打赏
  • 举报
回复
都是高手!!~学习了,一会结贴去,多谢多谢!
sciland 2009-09-24
  • 打赏
  • 举报
回复
字段类型是varchar
sciland 2009-09-24
  • 打赏
  • 举报
回复
这个我ip和地区的表我用过,你就把ip字段补充完整,如“210.251.089.120 210.251.089.127 日本 Iwatani College of Business”,然后在第一列上建立索引,速度还是很快的,我的表的长度是33万多,速度能接受。
nianzhang747 2009-09-24
  • 打赏
  • 举报
回复
这些函数 是capi函数吧 底层都实现了 其实我们也可以自己实现
阿_布 2009-09-24
  • 打赏
  • 举报
回复
mark!mark!版主又出新招了。
百年树人 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
在MYSQL中不需要用存储过程,直接用SQL语句加上MYSQL的内置函数就行了。

SQL codemysql>select*from t_yyhakusu;+--------------+----------------+--------+------------+| begin_ip| end_ip| add1| add2|+--------------+----------------+--------+------------+|194.77.0.0|194.77.255.255| 德国| 无具体地点||194.78.99.80|194.78.99.95| 比利时| BOSTON|+--------------+----------------+--------+------------+2 rowsinset (0.11 sec)

mysql>
mysql>select*from t_yyhakusu->where INET_ATON('194.78.99.85')between INET_ATON(begin_ip)and INET_ATON(end_ip);+--------------+--------------+--------+---------+| begin_ip| end_ip| add1| add2|+--------------+--------------+--------+---------+|194.78.99.80|194.78.99.95| 比利时| BOSTON|+--------------+--------------+--------+---------+1 rowinset (0.11 sec)

mysql>
[/Quote]

学习
nianzhang747 2009-09-23
  • 打赏
  • 举报
回复
INET_ATON

汗 比较ip的
ACMAIN_CHM 2009-09-23
  • 打赏
  • 举报
回复
在MYSQL中不需要用存储过程,直接用SQL语句加上MYSQL的内置函数就行了。

mysql> select * from t_yyhakusu;
+--------------+----------------+--------+------------+
| begin_ip | end_ip | add1 | add2 |
+--------------+----------------+--------+------------+
| 194.77.0.0 | 194.77.255.255 | 德国 | 无具体地点 |
| 194.78.99.80 | 194.78.99.95 | 比利时 | BOSTON |
+--------------+----------------+--------+------------+
2 rows in set (0.11 sec)

mysql>
mysql> select * from t_yyhakusu
-> where INET_ATON('194.78.99.85') between INET_ATON(begin_ip) and INET_ATON(end_ip);
+--------------+--------------+--------+---------+
| begin_ip | end_ip | add1 | add2 |
+--------------+--------------+--------+---------+
| 194.78.99.80 | 194.78.99.95 | 比利时 | BOSTON |
+--------------+--------------+--------+---------+
1 row in set (0.11 sec)

mysql>

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧