最近有个朋友说他要做的人员注册量的统计,有两张表,一张是用户注册表,一张是IP段对应城市表。需要根据用户注册时的IP查询到对应的城市,从而知道该城市有多少人注册。
其实没什么,关键是IP地址和IP段的匹配问题。
一开始,我使用的是BETWEEN,结果显然是不行的。
最后我想到用函数直接将192.168.0.1形式的IP按256进制转为数字,然后进行between(或者"<"AND">")。
其实想到方法,实现就简单的多了。下面把函数贴上来,有需要的朋友可以偷偷懒 ^_^
1、用户注册表
create table SINO_USER
(
ID NUMBER(19),
USERNAME VARCHAR2(255),
UPDATE_TIME TIMESTAMP(6),
IP VARCHAR2(255)
)
2、IP地址段表
create table SINO_IP
(
ID NUMBER(19),
IP_BEGIN VARCHAR2(255),
CITY VARCHAR2(255),
IP_END VARCHAR2(255)
)
注:这两张表是我简化了,千万别以为是生产库的表.....
3、创建函数
create or replace function f_ip2number(ip in varchar2) return varchar2 as
v_ip_1 number;
v_ip_2 number;<
本文发布于:2024-01-31 01:00:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170663406024183.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |