分享最近写的 两条sql语句
1. 搭建基本环境
插入测试数据
insert into jgdm (jgdm,jgmc) values('12300000000','河南省');
insert into jgdm (jgdm,jgmc) values('12300000005','河南省郑州市');
commit;
insert into jgdm(jgdm,jgmc) values(00300000000,'重庆市');
insert into jgdm(jgdm,jgmc) values(00300000001,'重庆市石柱县');
insert into jgdm(jgdm,jgmc) values(00300000004,'重庆市綦江区');
commit;
2. 分情况 更新 表
declare
begin
for v_jgmc in (select jgmc from jgdm ) loop
dbms_output.put_line('更新省的相关信息');
if instr(v_jgmc.jgmc,'省')<> 0 and ( instr(v_jgmc.jgmc,'县')=0 or instr(v_jgmc.jgmc,'区')=0 and instr(v_jgmc.jgmc,'市')<>0 ) then
--1. 更新 机构级次代码
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 jgjcdm 更新为 00
execute immediate 'update jgdm set jgjcdm=''00'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0';
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjcdm 更新为 01
execute immediate 'update jgdm set jgjcdm=''01'' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0';
--2. 更新 上级机构代码
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 sjjgdm 更新为 自己的 jgdm
execute immediate 'update jgdm set sjjgdm=(select jgdm from jgdm where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0 and instr('''||v_jgmc.jgmc||''',jgjc)<>0) ';
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 sjjgdm 更新为 自己的 jgdm
--execute immediate 'update jgdm set sjjgdm=(select jgdm from jgdm where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 )';
--3. 更新 机构简称
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且没有 '市'的 jgjc 更新为 自己的'''||v_jgmc.jgmc||'''
execute immediate 'update jgdm set jgjc='''||v_jgmc.jgmc||''' where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')=0';
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjc 更新为 自己所属的市
execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''省'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''省'')) where instr('''||v_jgmc.jgmc||''',''省'')<>0 and instr('''||v_jgmc.jgmc||''',''市'')<>0';
commit;
end if;
dbms_output.put_line('更新直辖市的相关信息');
if instr('''||v_jgmc.jgmc||''','省')=0 and ( instr('''||v_jgmc.jgmc||''','县')<>0 or instr('''||v_jgmc.jgmc||''','区')<>0 and instr('''||v_jgmc.jgmc||''','市')<>0 ) then
-- dbms_output.put_line(v_'''||v_jgmc.jgmc||'''.'''||v_jgmc.jgmc||''');
--1. 更新 机构级次代码
--把 '''||v_jgmc.jgmc||''' 中 没有 ’省、县、区‘ 并且有 '市'的 jgjcdm 更新为 00
execute immediate 'update jgdm set jgjcdm=''00'' where instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';
--把 '''||v_jgmc.jgmc||''' 中 有 ’市、县、区‘ 并且没有 '省' 的 jgjcdm 更新为 01
execute immediate 'update jgdm set jgjcdm=''01'' where ( instr('''||v_jgmc.jgmc||''',''县'')<>0 or instr('''||v_jgmc.jgmc||''',''区'')<>0 ) and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';
--2. 更新 上级机构代码
--把 '''||v_jgmc.jgmc||''' 中 有 ’市‘ 并且没有 ’省、县、区' 的 sjjgdm 更新为 自己的 jgdm
execute immediate 'update jgdm t2 set sjjgdm=(select jgdm from jgdm t1 where (instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0) and instr('''||v_jgmc.jgmc||''',''市'')<>0 ) ';
--把 '''||v_jgmc.jgmc||''' 中 有 ’省‘ 并且有 '市'的 jgjc 更新为 自己所属的市
execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''市'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''市'')) where instr('''||v_jgmc.jgmc||''',''省'')=0 and instr('''||v_jgmc.jgmc||''',''市'')<>0 ';
--3. 更新 机构简称
--把 '''||v_jgmc.jgmc||''' 中 有 '市' 并且没有 '县','区',‘省‘ 并且的 jgjc 更新为 自己的'''||v_jgmc.jgmc||'''
execute immediate 'update jgdm set jgjc='''||v_jgmc.jgmc||''' where instr('''||v_jgmc.jgmc||''',''市'')<>0 and ( instr('''||v_jgmc.jgmc||''',''县'')=0 and instr('''||v_jgmc.jgmc||''',''区'')=0 ) ';
--把 '''||v_jgmc.jgmc||''' 中 有 ’市‘ 并且有 '县' '区'的 jgjc 更新为 自己所属的市
execute immediate 'update jgdm set jgjc= substr('''||v_jgmc.jgmc||''',instr('''||v_jgmc.jgmc||''',''市'')+1,length('''||v_jgmc.jgmc||''')-instr('''||v_jgmc.jgmc||''',''市'')) where instr('''||v_jgmc.jgmc||''',''市'')<>0 and (instr('''||v_jgmc.jgmc||''',''县'')<>0 or instr('''||v_jgmc.jgmc||''',''区'')<>0 ) ';
commit;
end if;
end loop;
end;
写的不好,望见谅
分享最近写的 两条sql语句的更多相关文章
- 题目:写出一条SQL语句,查询工资高于10000,且与他所在部门的经理年龄相同的职工姓名。
create table Emp( eid char(20) primary key, ename char(20), age integer check (age > 0), did char ...
- 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
答:解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A ...
- 曾经很长时间不会写的两个SQL语句(group by,having)
1.统计各部门的平均工资,平均资金(要求同时显示出部门名称,部门编号,部门总人数) SQL)),) 部门平均工资,)),) 部门平均资金 FROM EMP E RIGHT JOIN DEPT D ON ...
- 写出一条Sql语句:取出表Customer中第31到第40记录(SQLServer,以自动增长的Id作为主键,注意:Id可能不是连续的。
select top 10 * from (select ROW_NUMBER() over(order by Id) as rows,* from Customer) as C where C.ro ...
- 写出一条SQL语句:取出表A中第31到40行记录(SQLserver,以自增长的ID作为主键,注意: 一条Sql语句:取出表A中第31到第40记录
解1: select top 10 * from A where id not in (select top 30 id from A) 解2: select top 10 * from A wher ...
- 使用传入的总记录数实现一条sql语句完成分页查询
使用传入的总记录数实现一条sql语句完成分页查询 问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...
- 关联映射、关联查询【重点掌握一条SQL语句的那种方法】
1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本 ...
- CASE WHEN 及 SELECT CASE WHEN的用法(写了一坨烂代码发现两条sql就行了, 哎)
转自:http://blog.sina.com.cn/s/blog_4c538f6c01012mzt.html Case具有两种格式.简单Case函数和Case搜索函数. 简单Case函数 CASE ...
- [SQL]开启事物,当两条插入语句有出现错误的时候,没有错误的就插入到表中,错误的语句不影响到正确的插入语句
begin transaction mustt insert into student values(,'kkk','j大洒扫','j','djhdjh') insert into student v ...
随机推荐
- What does the number on the visual studio solution icon represent?
The numbers correspond to the internal version numbers of various editions of Visual Studio http://e ...
- mysql 累加排序求名次
自己做的一个小项目里需要用mysql计算一些信息. mysql中的 表如下(注:表中数据都是测试数据,随机生成的) mysql> select * from shake_log; +-----+ ...
- 【转】使用命令行方式创建和启动android模拟器
原文网址:http://blog.csdn.net/tiandinilv/article/details/8953001 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的 ...
- leetcode Longest Common Prefix 多个字符串的最长字串
public class Solution { public String get(String a,String b) { if(a==""||b=="") ...
- Longest Consecutive Sequence hashset
public class Solution { public int longestConsecutive(int[] num) { HashSet<Integer> hash=new H ...
- 如何以非 root 用户将应用绑定到 80 端口-ssh 篇 » 社区 » Ruby China
如何以非 root 用户将应用绑定到 80 端口-ssh 篇 » 社区 » Ruby China 如何以非 root 用户将应用绑定到 80 端口-ssh 篇
- Validate XML using a XSD (XML Schema)
Consider this XML file howto.xml : <?xml version="1.0" encoding="ISO-8859-1"? ...
- cocoaPods教程
<#这个不是命令,包括尖括号#> 一.源设置 1. 查看源,终端输入: sudo gem sources -l 2. 删除已有的源,如: sudo gem sources --remo ...
- hibernate一对多关系映射(自身关联)
示例:一个类别(Category)下面有多个子类别,多个子类别属于同一个父类别. public class Category { private Integer id; private String ...
- 还原dede数据后系统基本参数空白栏目无显示的解决方法
有时dedecms开发的网站在更换空间还原数据后,出现"系统基本参数"空白,而且可以看到tag也没有了. 大家不妨看看后台"数据库备份/还原"处,已经还原后的表 ...