更新号段表。

1、获取全量号段信息,使用提取工具,提取号段,保存到包表HD中(省份:SF,区号:AREACODE,最大7位号段:HD)

2、利用存储过程P_HBHD_AREACODE合并新获取的全量号段表 HD 的连续号段,到新的表中USER_TABLE_NEW。如果有相互包含,可利用存储过程P_QCHD_AREACODE合并相互包含号段

BEGINP_HBHD_AREACODE(7,HD,USER_TABLE_NEW);
END;

3、利用存储过程P_HBHD_AREACODE合并老号段表 USER_TABLE 的连续号段,保存到表USER_TABLE_OLD中。如果有相互包含,可利用存储过程P_QCHD_AREACODE合并相互包含号段

BEGINP_HBHD_AREACODE(7,USER_TABLE,USER_TABLE_OLD);
END;

4、利用查漏补缺 SQL 查询缺少的号段

合并连续号段存储过程:P_HBHD_AREACODE:

CREATE OR REPLACE PROCEDURE P_HBHD_AREACODE (P NUMBER DEFAULT 7,v_table_src VARCHAR2 DEFAULT 'HD',v_table_dst VARCHAR2 DEFAULT 'HD_HB')
AUTHID CURRENT_USER  ----添加后存储过程拥有创建表的权限
AS
--变量
i NUMBER;
N NUMBER;
v_table_tmp1        VARCHAR2(100);
v_table_tmp2        VARCHAR2(100);
v_sql_create    VARCHAR2 (400);
v_sql_insert        VARCHAR2 (400);
v_sql_count         VARCHAR2 (500);
BEGIN
--执行
i:=0;
N:=0;
v_table_tmp1:='HD_HB1';
v_table_tmp2:='HD_HB2';----初始化,删除重名表,创建循环表 v_table_tmp1 ,v_table_tmp2
--删除重名表
v_sql_count:='SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '''||v_table_dst||'''';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0) > 0 THENEXECUTE IMMEDIATE ' DROP TABLE '||v_table_dst||' PURGE';
END IF;
v_sql_count:='SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '''||v_table_tmp1||'''';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0) > 0 THENEXECUTE IMMEDIATE ' DROP TABLE '||v_table_tmp1||' PURGE';
END IF;
v_sql_count:='SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '''||v_table_tmp2||'''';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0) > 0 THENEXECUTE IMMEDIATE ' DROP TABLE '||v_table_tmp2||' PURGE';
END IF;
--创建循环表 v_table_tmp1 ,v_table_tmp2
v_sql_create:='CREATE TABLE '||v_table_tmp1||' (AREACODE VARCHAR2(16),BEGINNUMBER NUMBER, ENDNUMBER NUMBER)';
EXECUTE IMMEDIATE v_sql_create;
v_sql_create:='CREATE TABLE '||v_table_tmp2||' (AREACODE VARCHAR2(16),BEGINNUMBER NUMBER, ENDNUMBER NUMBER)';
EXECUTE IMMEDIATE v_sql_create;
IF P=11 THEN
v_sql_insert:='INSERT INTO  '||v_table_tmp2||' SELECT AREACODE, BEGINNUMBER ,ENDNUMBER FROM '||v_table_src||' ORDER BY 2';
ELSE
v_sql_insert:='INSERT INTO  '||v_table_tmp2||' SELECT AREACODE, RPAD(HD , 11, 0) ,RPAD(HD , 11, 9) FROM '||v_table_src||' ORDER BY 2';
END IF;
EXECUTE IMMEDIATE v_sql_insert;dbms_output.put_line('开始合并连续号段');
----循环体
loop
----预备 v_table_tmp1 表
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||v_table_tmp1||' DROP STORAGE';
COMMIT;
--判断是否有连续号段
v_sql_count:='SELECT COUNT(*) FROM '||v_table_tmp2||' A , '||v_table_tmp2||' B WHERE A.AREACODE=B.AREACODE AND B.BEGINNUMBER = A.ENDNUMBER + 1';
EXECUTE IMMEDIATE v_sql_count INTO N;
dbms_output.put_line('含有连续号段:'||N);
if N=0 then
--如果没有连续号段,输出结果到 HD_JG 表
v_sql_create:='CREATE TABLE '||v_table_dst||' AS SELECT AREACODE,MIN(BEGINNUMBER) BEGINNUMBER,ENDNUMBER FROM '||v_table_tmp2||' GROUP BY AREACODE,ENDNUMBER ORDER BY 2';
EXECUTE IMMEDIATE v_sql_create;
exit;
end if;
--合拼连续号段到 v_table_tmp1 表
i:=i+1;
dbms_output.put_line('合并连续号段第- '||i||' -遍。');
v_sql_insert:='INSERT INTO '||v_table_tmp1||' SELECT A.AREACODE,A.BEGINNUMBER,CASE WHEN B.ENDNUMBER IS NOT NULL THEN B.ENDNUMBER ELSE A.ENDNUMBER END FROM '||v_table_tmp2||' A LEFT JOIN '||v_table_tmp2||' B ON A.AREACODE=B.AREACODE AND A.ROWID != B.ROWID AND B.BEGINNUMBER = A.ENDNUMBER + 1';
EXECUTE IMMEDIATE v_sql_insert;
COMMIT;----预备 v_table_tmp2 表
EXECUTE IMMEDIATE 'TRUNCATE TABLE  '||v_table_tmp2||' DROP STORAGE';
--判断是否有连续号段
v_sql_count:='SELECT COUNT(*) FROM '||v_table_tmp1||' A , '||v_table_tmp1||' B WHERE A.AREACODE=B.AREACODE AND B.BEGINNUMBER = A.ENDNUMBER + 1';
EXECUTE IMMEDIATE v_sql_count INTO N;
dbms_output.put_line('含有连续号段:'||N);
if N=0 then
--如果没有连续号段,输出结果到 HD_JG 表
v_sql_create:='CREATE TABLE '||v_table_dst||' AS SELECT AREACODE,MIN(BEGINNUMBER) BEGINNUMBER,ENDNUMBER FROM '||v_table_tmp1||' GROUP BY AREACODE,ENDNUMBER ORDER BY 2';
EXECUTE IMMEDIATE v_sql_create;
exit;
end if;
--合拼连续号段到 v_table_tmp2 表
i:=i+1;
dbms_output.put_line('合并连续号段第- '||i||' -遍。');
v_sql_insert:='INSERT INTO '||v_table_tmp2||' SELECT A.AREACODE,A.BEGINNUMBER ,CASE WHEN B.ENDNUMBER IS NOT NULL THEN B.ENDNUMBER ELSE A.ENDNUMBER END FROM '||v_table_tmp1||' A LEFT JOIN '||v_table_tmp1||' B ON A.AREACODE=B.AREACODE AND A.ROWID != B.ROWID  AND B.BEGINNUMBER = A.ENDNUMBER + 1';
EXECUTE IMMEDIATE v_sql_insert;
COMMIT;
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||v_table_tmp1||' DROP STORAGE';
COMMIT;
end loop;
dbms_output.put_line('最后合并连续结果在'||v_table_dst||'表');
dbms_output.put_line(chr(10)||'合并连续号段--完成'||chr(10));
EXECUTE IMMEDIATE 'DROP TABLE '||v_table_tmp1||' PURGE';
EXECUTE IMMEDIATE 'DROP TABLE '||v_table_tmp2||' PURGE';
dbms_output.put_line('检测相互包含');
v_sql_count:='SELECT COUNT(distinct A.BEGINNUMBER) FROM '||v_table_dst||' A , '||v_table_dst||' B WHERE  A.AREACODE=B.AREACODE AND (A.BEGINNUMBER < B.BEGINNUMBER AND B.BEGINNUMBER < A.ENDNUMBER) OR (A.BEGINNUMBER > B.BEGINNUMBER AND A.ENDNUMBER < B.ENDNUMBER )';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0) > 0 THENdbms_output.put_line('含有相互包含号段:'||N||'条,需要执行包含去重');P_QCHD_AREACODE();
ELSEdbms_output.put_line('没有相互包含记录');
END IF;
END;

合并相互包含号段存储过程:P_QCHD_AREACODE:

CREATE OR REPLACE PROCEDURE P_QCHD_AREACODE (v_table_src VARCHAR2 DEFAULT 'HD_HB',v_table_dst VARCHAR2 DEFAULT 'HD_QC')
AUTHID CURRENT_USER  ----添加后存储过程拥有创建表的权限
AS
i                               NUMBER;
N                               NUMBER;
v_table_tmp         VARCHAR2(100);
v_sql_count         VARCHAR2(400);
v_sql_create        VARCHAR2(400);
v_sql_insert        VARCHAR2(400);
BEGIN           --开始执行
i:=0;
N:=0;
v_table_tmp:='HD_TMP';--判断是否含有相互包含号段
v_sql_count:='SELECT COUNT(DISTINCT A.BEGINNUMBER) FROM '||v_table_src||' A , '||v_table_src||' B WHERE A.AREACODE=B.AREACODE AND (A.BEGINNUMBER < B.BEGINNUMBER AND B.BEGINNUMBER < A.ENDNUMBER) OR (A.BEGINNUMBER > B.BEGINNUMBER AND A.ENDNUMBER < B.ENDNUMBER )';
EXECUTE IMMEDIATE v_sql_count INTO N;
--EXECUTE IMMEDIATE v_sql_count;
dbms_output.put_line('含有相互包含号段:'||N);
IF NVL(N, 0)=0 THEN
--如果没有相互包含号段,删除表HD_QC1
dbms_output.put_line('没有相互包含号段,无需合并!');
ELSE----初始化,删除重名表,创建表
--删除重名表
v_sql_count:='SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '''||v_table_dst||'''';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0) > 0 THEN
EXECUTE IMMEDIATE ' DROP TABLE '||v_table_dst||' PURGE';
END IF;
v_sql_count:='SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = '''||v_table_tmp||'''';
EXECUTE IMMEDIATE v_sql_count INTO N;
IF NVL(N, 0)  > 0 THENEXECUTE IMMEDIATE 'DROP TABLE '||v_table_tmp||' PURGE';
END IF;--创建表 HD_QC1
v_sql_create:='CREATE TABLE '||v_table_dst||' (AREACODE VARCHAR2(16),BEGINNUMBER NUMBER, ENDNUMBER NUMBER)';
EXECUTE IMMEDIATE v_sql_create;
v_sql_create:='CREATE TABLE '||v_table_tmp||' (AREACODE VARCHAR2(16),BEGINNUMBER NUMBER, ENDNUMBER NUMBER)';
EXECUTE IMMEDIATE v_sql_create;
v_sql_insert:='INSERT INTO '||v_table_dst||' SELECT * FROM '||v_table_src||' ORDER BY 2';
EXECUTE IMMEDIATE v_sql_insert;
COMMIT;----循环体
dbms_output.put_line('开始合并相互包含号段');
LOOP
----预备 HD_QC1 表
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||v_table_tmp||' DROP STORAGE';
--合拼相互包含号段到 HD_QC1 表
i:=i+1;
dbms_output.put_line('合并相互包含号段第- '||i||' -遍。');
v_sql_insert:='INSERT INTO '||v_table_tmp||' SELECT DISTINCT A.AREACODE,A.BEGINNUMBER, CASE WHEN A.ENDNUMBER < B.ENDNUMBER THEN B.ENDNUMBER ELSE A.ENDNUMBER END FROM '||v_table_dst||' A LEFT JOIN '||v_table_dst||' B ON A.AREACODE=B.AREACODE AND (A.BEGINNUMBER < B.BEGINNUMBER AND A.ENDNUMBER > B.BEGINNUMBER) OR (A.BEGINNUMBER > B.BEGINNUMBER AND A.ENDNUMBER < B.ENDNUMBER)';
EXECUTE IMMEDIATE v_sql_insert;
COMMIT;
EXECUTE IMMEDIATE 'TRUNCATE TABLE '||v_table_dst||' DROP STORAGE';
v_sql_insert:='INSERT INTO '||v_table_dst||' WITH A AS (SELECT AREACODE,BEGINNUMBER,MAX(ENDNUMBER) ENDNUMBER FROM '||v_table_tmp||' GROUP BY AREACODE,BEGINNUMBER)  SELECT AREACODE,MIN(BEGINNUMBER),ENDNUMBER FROM A GROUP BY AREACODE,ENDNUMBER ORDER BY 2';
EXECUTE IMMEDIATE v_sql_insert;
COMMIT;
--判断是否含有相互包含号段
v_sql_count:='SELECT COUNT(DISTINCT A.BEGINNUMBER) FROM '||v_table_dst||' A , '||v_table_dst||' B WHERE A.AREACODE=B.AREACODE AND (A.BEGINNUMBER < B.BEGINNUMBER AND B.BEGINNUMBER < A.ENDNUMBER) OR (A.BEGINNUMBER > B.BEGINNUMBER AND A.ENDNUMBER < B.ENDNUMBER )';
EXECUTE IMMEDIATE v_sql_count INTO N;
--EXECUTE IMMEDIATE v_sql_count;
dbms_output.put_line('含有相互包含号段:'||N);
IF NVL(N, 0)=0 THEN
--如果没有相互包含号段,删除表HD_QC1
dbms_output.put_line('最后合并相互包含号段结果在'||v_table_dst||'表');
EXECUTE IMMEDIATE 'DROP TABLE '||v_table_tmp||' PURGE';
dbms_output.put_line(chr(10)||'合并相互包含号段--完成'||chr(10));
EXIT;
END IF;
END LOOP;
END IF;END;             --结束

查漏补缺 SQL方法一:


/*-----------------------------------处理老表缺少号段记录方法1-----------------------------------
1、使用存储过程P_HBHD_AREACODE先合并老号段表连续号段到表HD_HB(AREACODE区号,BEGINNUMBER开始号码,ENDNUMBER结束号码)
2、使用存储过程P_HBHD_AREACODE,统计新号段到表USER_TABLE(AREACODE区号,BEGINNUMBER开始号码,ENDNUMBER结束号码)
3、统计新老表子集、交集、补集处理
*/
---------------------------  1、全量交集子集  ---------------------------
WITH T AS (SELECT DISTINCTCOUNT(A.BEGINNUMBER) OVER ( PARTITION BY A.BEGINNUMBER ) JS,  --新表单条记录包含老表交集,子集个数dense_rank ( ) OVER ( ORDER BY A.BEGINNUMBER ) FL,  --新表记录原号码序号RANK ( ) OVER ( partition BY A.BEGINNUMBER ORDER BY B.BEGINNUMBER ) PX,  --新表单条记录对应老表交集,子集序号A.AREACODE A_A,  --区号TO_NUMBER( A.BEGINNUMBER ) A_S,  --新表开始号码TO_NUMBER( A.ENDNUMBER ) A_E,  --新表结束号码TO_NUMBER( B.BEGINNUMBER ) B_S,  --老表开始号码TO_NUMBER( B.ENDNUMBER ) B_E,  --老表结束号码CASEWHEN A.BEGINNUMBER < B.BEGINNUMBER AND A.ENDNUMBER > B.ENDNUMBER THEN 1 ELSE 0 END ZJ FROM USER_TABLE_NEW A,USER_TABLE_OLD B WHERE   A.AREACODE = B.AREACODE AND (( A.BEGINNUMBER < B.BEGINNUMBER AND A.ENDNUMBER > B.BEGINNUMBER ) OR ( A.BEGINNUMBER < B.ENDNUMBER AND A.ENDNUMBER > B.ENDNUMBER ) ) ORDER BY 1 DESC,2
)
---------------------------  2、含有一次交集,子集  ---------------------------
SELECT T.A_A 区号,CASE WHEN A_S >= B_S THEN B_E+1 ELSE A_S END 开始号段,CASE WHEN A_E <= B_E OR ZJ = 1 THEN B_S-1 ELSE A_E END 结束号段
FROM T
WHERE JS = 1
UNION ALL
SELECT T.A_A,B_E+1,A_E FROM T WHERE JS = 1 AND ZJ = 1
---------------------------  3、含有一次以上子集  ---------------------------
UNION ALL
SELECT T.A_A,CASE WHEN PX=1 THEN A_S ELSE B_E+1 END J_S ,CASE WHEN PX=1 THEN B_S-1 ELSE A_E END J_E
FROM T
WHERE JS>1 AND ZJ=1 AND (PX=1 OR PX = JS)
---------------------------  4、含有一次以上交集与子集  ---------------------------
UNION ALL
SELECT M.A_A,M.B_E+1,N.B_S-1
FROM T M LEFT JOIN T N ON M.FL = N.FL AND M.PX+1 = N.PX
WHERE M.JS > 1 AND M.PX !=M.JS
---------------------------  5、缺少号段  ---------------------------
UNION ALL
SELECT A.AREACODE,TO_NUMBER(A.BEGINNUMBER),TO_NUMBER(A.ENDNUMBER)
FROM USER_TABLE_NEW A LEFT JOIN USER_TABLE_OLD B ON A.AREACODE=B.AREACODE AND ((A.BEGINNUMBER >= B.BEGINNUMBER AND A.ENDNUMBER <= B.ENDNUMBER) OR ( A.BEGINNUMBER < B.ENDNUMBER AND A.ENDNUMBER > B.ENDNUMBER ))
WHERE B.BEGINNUMBER IS NULL
ORDER BY 3
---------------------------  END  ---------------------------

查漏补缺 SQL方法二:未完成,

/*-----------------------------------处理缺少号段记录方法2-----------------------------------1、先更新1、2交集,在处理3子集,比第一种方法较复杂,但思路较清晰,待完成。2、1、2、3记录处理完,加上4补集,就为老表缺少号段记录,5-A为B的子集记录无需处理
*/
---------------------------1、下交集---------------------------
SELECT 'XJJ' GX,A.DELINEATION,A.BEGINNUMBER,A.ENDNUMBER,B.BEGINNUMBER,B.ENDNUMBER
FROM USER_TABLE_NEW A,USER_TABLE_OLD B
WHERE A.AREACODE=B.AREACODE AND A.BEGINNUMBER<B.BEGINNUMBER AND A.ENDNUMBER>B.BEGINNUMBER AND A.ENDNUMBER<=B.ENDNUMBER
---------------------------2、上交集---------------------------
UNION ALL
SELECT 'SJJ' GX,A.DELINEATION,A.BEGINNUMBER,A.ENDNUMBER,B.BEGINNUMBER,B.ENDNUMBER
FROM USER_TABLE_NEW A,USER_TABLE_OLD B
WHERE A.AREACODE=B.AREACODE AND A.BEGINNUMBER<B.ENDNUMBER AND A.ENDNUMBER>B.ENDNUMBER AND A.BEGINNUMBER>=B.BEGINNUMBER
ORDER BY 2
---------------------------3、子集---------------------------
UNION ALL
SELECT 'ZJ' GX,A.DELINEATION,A.BEGINNUMBER,A.ENDNUMBER A_E,B.BEGINNUMBER,B.ENDNUMBER
FROM USER_TABLE_NEW A,USER_TABLE_OLD B
WHERE A.AREACODE=B.AREACODE AND A.BEGINNUMBER < B.BEGINNUMBER  AND A.ENDNUMBER > B.ENDNUMBER
---------------------------4、补集---------------------------
SELECT A.DELINEATION,A.BEGINNUMBER,A.ENDNUMBER
FROM USER_TABLE_NEW A LEFT JOIN USER_TABLE_OLD B ON A.AREACODE=B.AREACODE AND ((A.BEGINNUMBER >= B.BEGINNUMBER AND A.ENDNUMBER <= B.ENDNUMBER)    --5、A为B的子集,不处理部分OR (A.BEGINNUMBER < B.BEGINNUMBER AND A.ENDNUMBER > B.BEGINNUMBER ) --全量1交集子集OR (A.BEGINNUMBER < B.ENDNUMBER AND A.ENDNUMBER > B.ENDNUMBER )      --全量2交集子集)
WHERE B.BEGINNUMBER IS NULL ORDER BY 2
---------------------------5、A为B的子集---------------------------
SELECT DISTINCT A.DELINEATION,A.BEGINNUMBER,A.ENDNUMBER,B.BEGINNUMBER,B.ENDNUMBER
FROM USER_TABLE_NEW A,USER_TABLE_OLD B
WHERE A.AREACODE=B.AREACODE AND A.BEGINNUMBER >= B.BEGINNUMBER AND A.ENDNUMBER <= B.ENDNUMBER
ORDER BY 2
---------------------------     END     ---------------------------

Oracle 合并号段,整理缺失号段 存储过程及SQL相关推荐

  1. 162号段,165号段,167号段

    162号段虚拟运营商的第四个亿级号段获批,中国联通"喜提"167虚商号段,至此中国联通共拥有1704/1707/1708/1709/171X/167X,共2.4亿码号资源. 165 ...

  2. 连续票据号段,每次选择号段之后,根据已选号段和剩余号段,自动选择号段问题解决思路。

    需求: 在本项目中,添加选择票据信息时,每条票据信息都有一个指定的号码段,有起始号码,终止号码,隐藏的属性还有校验位信息,号码长度. 要求用户每次选择号段时,会根据用户已选票据,和用户当前选择的票据信 ...

  3. oracle号码段拆开,知道号段起止,如何选择该号段内的所有号码?

    有表如下: CREATE TABLE T20 ( ID  NUMBER(2), S   NUMBER(5), E   NUMBER(5) ); INSERT INTO T20 ( ID, S, E ) ...

  4. oracle sql查询缺失号,Oracle层次查询和分析函数

    摘要 一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查 ...

  5. 最全的中国大陆运营商所有号段!

    (整理来自维基百科,未来还有更多号段,持续更新中-) 手机号码: 中国内地手机号码以1开头(未来预留92和98开头),共11位数,前7位数字通常称为手机号段.手机号段类似于地区电话区号,但又不完全相同 ...

  6. 最新代手机号段整理[用于判断]

    按照运营商整理 移动号段: 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 19 ...

  7. 最新手机号验证正则表达式(电信、移动、广电号段)

    一般表单页面都需要填写手机号,校验用户输入的手机号码是否正确,就要用到正则表达式,用正则表达式来匹配手机号段,如在运营商号段内,则号码正确.因此,需要知道运营商最新的号段,如下所示: 各大运营商手机号 ...

  8. java号段_Java匹配国内手机号码段

    目前(2016-12-7)三大运营商最新号段以下 移动号段: 134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 1 ...

  9. python按照号段生成手机号接收验证码_用Python判断手机号码的运营商

    现在的APP一般在注册应用的时候,都会让用户输入手机号码,在短信验证之前首先会验证号码的真实性,如果是不存在的号码,就不会发送验证码.检验规则如下: 长度不小于11位 是移动,联通,电信号段中的任意一 ...

最新文章

  1. 聊聊storm的AggregateProcessor的execute及finishBatch方法
  2. FD.io/VPP — GRE over IPSec
  3. [翻译] JTCalendar
  4. pyqt5入门教程(二)
  5. 最严谨的计算机语言p,用于PLC的华P语言编译器设计及实现.pdf
  6. v系列存储配置Linux多路径,linux下san存储多路径软件的配置
  7. 数据库语法_圣诞快乐:用GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容...
  8. JAVA通信编程(五)——串口通讯的补充说明
  9. srve0255e尚未定义要怎么办_皮肤干燥怎么办?四大方法帮你冬季补?
  10. 暑假集训中期测试 Problem D: 装箱问题2 (并查集)
  11. Elasticsearch整理笔记(四)
  12. HDU 3240 Counting Binary Trees 数论-卡特兰数
  13. hive 开窗函数之lag,lead,first_value,last_value
  14. mschart走势图 vc_在VC++中使用MSChart表格控件(小结)
  15. 计算机三级数据库技术笔记
  16. 无法删除文件 无法读取源文件或磁盘_U盘损坏“无法读取文件”不要慌,教你一招马上回血复活...
  17. 功率半导体器件的研究意义
  18. 实现一个简单的Database1
  19. GetLastError()函数
  20. EasyExcel根据自定义模板导出Excel(包含图片、表格)

热门文章

  1. varclus变量聚类对变量有啥要求_SPSS 相关分析之两变量相关分析
  2. 微信小程序中全局变量userInfo在其它页面不可用(wx.getUserInfo为异步获取信息)
  3. 对于晶振电路,我们需要从几个方面考虑设计:
  4. 街上卖什么都不稀罕,但卖这么低贱的草你不觉得奇怪吗?
  5. 基于java的仓库库存管理系统
  6. h3ch200虚拟服务器,H3C H200如何配置DDNS
  7. zte手机android手机怎么刷机,中兴ZTE A2020 Pro刷机教程,卡刷升级更新官方固件系统包...
  8. Office 2016 简体中文批量授权版镜像下载(包含Vsio,Project)
  9. ubuntu 系统 如何生成requirement.txt
  10. 工作流,WEB框架,UI组件网络收集整理