--省
create table xzqh_sheng(
"ID" int primary key,
"Name" varchar(50),
"ShortName" varchar(50),
"Code" varchar(50)
);insert into xzqh_sheng values(1,'河北省','冀','13');
insert into xzqh_sheng values(2,'山西省','晋','14');
insert into xzqh_sheng values(3,'辽宁省','辽','21');
insert into xzqh_sheng values(4,'吉林省','吉','22');
insert into xzqh_sheng values(5,'黑龙江省','黑','23');
insert into xzqh_sheng values(6,'江苏省','苏','32');
insert into xzqh_sheng values(7,'浙江省','浙','33');
insert into xzqh_sheng values(8,'安徽省','皖','34');
insert into xzqh_sheng values(9,'福建省','闽','35');
insert into xzqh_sheng values(10,'江西省','赣','36');
insert into xzqh_sheng values(11,'山东省','鲁','37');
insert into xzqh_sheng values(12,'河南省','豫','41');
insert into xzqh_sheng values(13,'湖北省','鄂','42');
insert into xzqh_sheng values(14,'湖南省','湘','43');
insert into xzqh_sheng values(15,'广东省','粤','44');
insert into xzqh_sheng values(16,'海南省','琼','46');
insert into xzqh_sheng values(17,'四川省','川、蜀','51');
insert into xzqh_sheng values(18,'贵州省','黔、贵','52');
insert into xzqh_sheng values(19,'云南省','滇、云','53');
insert into xzqh_sheng values(20,'陕西省','陕、秦','61');
insert into xzqh_sheng values(21,'甘肃省','甘、陇','62');
insert into xzqh_sheng values(22,'青海省','青','63');
insert into xzqh_sheng values(23,'台湾省','台','71');
insert into xzqh_sheng values(24,'香港特别行政区','港','81');
insert into xzqh_sheng values(25,'澳门特别行政区','澳','82');
insert into xzqh_sheng values(26,'北京市','京','11');
insert into xzqh_sheng values(27,'上海市','沪','31');
insert into xzqh_sheng values(28,'天津市','津','12');
insert into xzqh_sheng values(29,'重庆市','渝','50');
insert into xzqh_sheng values(30,'西藏自治区','藏','54');
insert into xzqh_sheng values(31,'新疆维吾尔自治区','疆','65');
insert into xzqh_sheng values(32,'广西壮族自治区','桂','45');
insert into xzqh_sheng values(33,'宁夏回族自治区','宁','64');
insert into xzqh_sheng values(34,'内蒙古自治区','蒙','15');
commit;--城市
create table xzqh_chengshi(
"ID" int primary key,
"shortcode" varchar(50),
"province" varchar(50),
"Name" varchar(50),
"code" varchar(50)
);insert into xzqh_chengshi values(2,'110100','26','市辖区','1101');
insert into xzqh_chengshi values(19,'110200','26','县','1102');
insert into xzqh_chengshi values(23,'120100','28','市辖区','1201');
insert into xzqh_chengshi values(39,'120200','28','县','1202');
insert into xzqh_chengshi values(44,'130100','1','石家庄市','1301');
insert into xzqh_chengshi values(69,'130200','1','唐山市','1302');
insert into xzqh_chengshi values(85,'130300','1','秦皇岛市','1303');
insert into xzqh_chengshi values(94,'130400','1','邯郸市','1304');
insert into xzqh_chengshi values(115,'130500','1','邢台市','1305');
insert into xzqh_chengshi values(136,'130600','1','保定市','1306');
insert into xzqh_chengshi values(163,'130700','1','张家口市','1307');
insert into xzqh_chengshi values(182,'130800','1','承德市','1308');
commit;--县
create table xzqh_xian(
"id" varchar(50),
"shortcode" varchar(50),
"name" varchar(50),
"code" varchar(50)
);insert into xzqh_xian values(1,'110101','东城区','1101');
insert into xzqh_xian values(2,'110102','西城区','1101');
insert into xzqh_xian values(3,'110103','崇文区','1101');
insert into xzqh_xian values(4,'110104','宣武区','1101');
insert into xzqh_xian values(5,'110105','朝阳区','1101');
insert into xzqh_xian values(6,'110106','丰台区','1101');
commit;
本身我写了一个有表判断baseinfo中code字段不为空则更新记录,为空则根据address(地址)查询编码code,如果address为空则不更新记录但是初学oracle,写到根据address查询编码code时卡住了。这个address(住址)有可能只有县级别(例如:住址为江岸区或武汉市江岸区),有可能为空不知道怎么做,求教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    address字段不在这三张表中。这三张表分别是省、市、县例如人口信息管理系统中
    person表字段有:Name,address查询时输入“湖南”用模糊查询只能查出address中包含“湖南”的记录。但是person表中address的信息有可能填写不完整。只填写了市或县,但是这些市或县也属于“湖南”。因此要查每个省或市的数据时,查询结果有遗漏问题
      

  2.   


    --可以使用关联查询把三张表关联起来查询,就可以啦..
    SELECT xzqh_sheng.code FROM xzqh_sheng,xzqh_chengshi,xzqh_xian
    WHERE xzqh_sheng.Code = xzqh_chengshi.province
    AND xzqh_chengshi.code = xzqh_xian.code
    WHERE xzqh_sheng.name like '%...%' 
    OR xzqh_chengshi.name like '%...%',
    OR xzqh_xian.name like '%...%';--不过考虑到如果城市和县区的名字有部分相同的情况,需要特殊考虑
      

  3.   

    重庆市市辖区合川区大石镇这种地址你想让程序显示什么CODE?..根据哪个关键字判断呢?就算人为判断都不好判断的..比较简单的方法是 省 市 县 做三个文本框或者下拉框,然后根据其中一个值来判读..参考意见而已..
      

  4.   

    就是因为这些地址不太规范,而且这些地址是不能被修改的。显示code是地区邮编。
    查询用下拉框做的话不行。我是用输入框做的,类似搜索引擎的模糊查询
      

  5.   

    规范不是问题,其实主要是你们要和客户协商好关键点是什么..还是你上面说的地址:重庆市市辖区合川区大石镇你们要和客户确定,取CODE 根据什么来取?重庆市?合川区? 大石镇?甚至是重庆市市辖这个关键字..
    这个你根本没法确定,你也不可能像百度一样做数据字典来分解...有个简单的想法,根据你们系统的实际情况,取地址的前两个汉字,用这两个汉字来模糊查询..200多万条,数据量一般大,你要做的操作也简单,就是提醒你记得备份,不要再业务时段做就可以了..
      

  6.   

    这个code就是邮编。
    例如:每个省下的市的县都有相应的邮编。
          表记录是这样的
          Name    detailaddress           code
         李明     重庆市市辖区合川区大石镇
          ...我就是想通过关键字查询。可能你还没懂我的意思。
    上面我给的三张表里面的数据包括全国的省,市,行政区,自治区,县等(因为数据太多,所以我除了省的表的数据给的是完整的,其他的城市、县只有几条数据仅供参考)
    我想通过detailaddress在这些表里面查询出该人所在地的相应编码。