ITPub博客

首页 > 数据库 > 数据库开发技术 > MSSQL 函数

MSSQL 函数

原创 数据库开发技术 作者:zaorv 时间:2019-01-28 12:06:05 0 删除 编辑

用户表A中有 name,address,dm三个字段数据格式如下
name address dm
张三 1101
李四 1102
...

标准表B中有 address,dm字段,数据如下:
address dm
北京市 11
东城区 1101
西城区 1102
天津市 12


请问如下用利用B中的数据更新A中的address?

详细点说明一下,我想得到的记录形式为
张三 北京市东城区
李四 北京市西城区
如何解决?

[@more@]


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

drop table ta

go
create 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 tb


create function fn_add(@dm varchar(16))
; returns varchar(40)
; --declare @dm varchar(16)
; --set @dm='055511'
;as
;begin
; 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
;go

; select cname,dbo.fn_add(dm),dm from ta
结果:

张三 中国北京市西城区 05551101
李四 中国北京市西城区 05551102
王五 中国天津市 055512

--来源 :http://www.delphibbs.com/delphibbs/dispq.asp?lid=3977958

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/729024/viewspace-1027821/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-12

  • 博文量
    192
  • 访问量
    206106