更新地名的问题(50)

  • 主题发起人 主题发起人 onlycxb
  • 开始时间 开始时间
O

onlycxb

Unregistered / Unconfirmed
GUEST, unregistred user!
用户表A中有 name,address,dm三个字段数据格式如下 name address dm 张三 1101 李四 1102 ...标准表B中有 address,dm字段,数据如下: address dm 北京市 11 东城区 1101 西城区 1102 天津市 12 请问如下用利用B中的数据更新A中的address?
 
update A set address=(select address from B where dm=A.dm) where dm=:?
 
详细点说明一下,我想得到的记录形式为张三 北京市东城区李四 北京市西城区如何解决?
 
希望大家踊跃解答
 
如果确定DM只有两位和四位的两种可能,有办法。update a set a.address=c.addressfrom a,(select dm,d.address+e.address address from (select dm,address from b where len(dm)=2)d left join (select dm,address from b where len(dm)=4) e on b.dm=substring(e.dm,1,2))cwhere a.dm=c.dm
 
编码规则是这样的,如果是如下这样,又当如何,请赐教?标准表B中有 address,dm字段,数据如下: address dm 中国 0555 北京市 055511 东城区 05551101 西城区 05551102 天津市 055512 上海市 055513生成如下形式 +中国 +北京市 -东城区 -西城区 -天津市 -上海市
 
你要的是什么形式??显示成树状?
 
create table ta( cname varchar(20), address varchar(20), dm varchar(20)) insert into ta(cname,dm) values('张三','05551101') insert into ta(cname,dm) values('李四','05551102') insert into ta(cname,dm) values('王五','055512') select * from ta gocreate table tb ( address varchar(20), dm varchar(20) )insert into tb(address,dm) values ('中国','0555')insert into tb(address,dm) values ('北京市','055511')insert into tb(address,dm) values ('东城区','05551101')insert into tb(address,dm) values ('西城区','05551102')insert into tb(address,dm) values ('天津市','055512')insert into tb(address,dm) values ('上海市','055513')select top 9 * from tbcreate function fn_add(@dm varchar(16)) returns varchar(40) --declare @dm varchar(16) --set @dm='055511'asbegin declare @addr varchar(40) if len(@dm)=8 begin select @addr= t.address+m.address from tb m , (select b.address+a.address as address,a.dm from tb a , (select * from tb where len(dm)=4 ) b where left(a.dm,4)=b.dm and len(a.dm)=6 ) t where left(@dm,6)=t.dm and len(m.dm)=8 and m.dm=@dm end if len(@dm)=6 begin select @addr= b.address+a.address from tb a , (select * from tb where len(dm)=4 ) b where left(@dm,4)=b.dm and len(a.dm)=6 and a.dm=@dm end if len(@dm) =4 begin select @addr= address from tb where len(@dm)=4 and dm=@dm end return @addr end goselect cname,dbo.fn_add(dm),dm from ta运行结果:张三 中国北京市东城区 05551101李四 中国北京市西城区 05551102王五 中国天津市 055512--来源 :http://www.delphibbs.com/delphibbs/dispq.asp?lid=3977958drop table tadrop table tbdrop function fn_add
 
感谢热心帮助,送上分数50.我以前在oracle下用如上类似方法,通过创建过程及引用游标方法已经实现,不需要临时建表。我更想知道,在delphi7下,如何编程实现。
 
希望大家继续讨论,寻找到最好地方法
 
后退
顶部