取字段某段填入其他表的相应字段!

binhai1980 2008-09-22 11:18:22
我有表1的字段"房屋地址"的值例如:
南京路19-3号1单元301室
南京路19-1号3单元201室
南京路19-2号3单元501室
南京路15号4单元402室
我的另一表2中,有字段“楼号”、“单元号”和“房屋号”
我该怎么写sql语句,根据第一张表1中的字段“房屋地址”,取有几栋楼和每栋楼对应“楼号”、“单元号”、“房屋号”并将值填入表2中。
急用!谢谢高手指点!!
...全文
95 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
binhai1980 2008-09-22
  • 打赏
  • 举报
回复
房屋地址中的字段 有的没有单元两个字,而且房号是int型的,不能要 室 这个汉字,郁闷!ing
dawugui 2008-09-22
  • 打赏
  • 举报
回复
南京路19-3号1单元301室
南京路19-1号3单元201室
南京路19-2号3单元501室
南京路15号4单元402室
南京路第一街道19-3号1单元301室
南京路第二街道19-1号3单元201室
南京路三里村19-2号3单元501室
南京路楼王庙15号4单元402室

这种不规则的东西没得搞的.自己手工一个一个改吧.
binhai1980 2008-09-22
  • 打赏
  • 举报
回复
表1中的“房屋地址” 的记录有7百多条,我需要在表2中把对应的每一个楼的,楼号、单元号和房屋号,都从表1中的“房屋地址”的值里分拆开插入表2.
lgxyz 2008-09-22
  • 打赏
  • 举报
回复
DECLARE @TB TABLE(房屋地址 VARCHAR(100))
INSERT @TB SELECT '南京路19-3号1单元301室'
UNION ALL SELECT '南京路19-1号3单元201室'
UNION ALL SELECT '南京路19-2号3单元501室'
UNION ALL SELECT '南京路15号4单元402室'

DECLARE @TA TABLE (楼号 VARCHAR(20),单元号 VARCHAR(20),房屋号 VARCHAR(20))

INSERT INTO @TA (楼号,单元号,房屋号)
SELECT 楼号=LEFT(房屋地址,CHARINDEX('号',房屋地址)),
单元号=SUBSTRING(房屋地址,CHARINDEX('号',房屋地址)+1,CHARINDEX('元',房屋地址)-CHARINDEX('号',房屋地址)),
房屋号=STUFF(房屋地址,1,CHARINDEX('元',房屋地址),'')
FROM @TB
SELECT * FROM @TA

/*
楼号 单元号 房屋号
-------------------- -------------------- --------------------
南京路19-3号 1单元 301室
南京路19-1号 3单元 201室
南京路19-2号 3单元 501室
南京路15号 4单元 402室

(所影响的行数为 4 行)
*/
昵称被占用了 2008-09-22
  • 打赏
  • 举报
回复
insert 表2 
select left(房屋地址,charindex('号',房屋地址)) as 楼号,
substring(房屋地址,charindex('号',房屋地址)+1,charindex('单元',房屋地址)-charindex('号',房屋地址)+1) as 单元,
right(房屋地址,len(房屋地址)-charindex('单元',房屋地址)-1) as 房屋号
from 表1
where 房屋地址 like '%号%单元%'

binhai1980 2008-09-22
  • 打赏
  • 举报
回复
有规律的,表1中“号”字前面的是楼号,单元号和房号 也都相应在房屋地址的字段里,就是该怎样写分段拆取这个字段,并把分段拆取的内容插入表2中。
中国风 2008-09-22
  • 打赏
  • 举报
回复
這樣?
--> -->

if not object_id('Tempdb..#T') is null
drop table #T
Go
Create table #T([Col1] nvarchar(15))
Insert #T
select N'南京路19-3号1单元301室' union all
select N'南京路19-1号3单元201室' union all
select N'南京路19-2号3单元501室' union all
select N'南京路15号4单元402室'
Go
Select
substring(Col1,patindex(N'%路%',Col1)+1,patindex(N'%号%',Col1)-patindex(N'%路%',Col1)-1),
substring(Col1,patindex(N'%号%',Col1)+1,patindex(N'%单元%',Col1)-patindex(N'%号%',Col1)-1),
replace(right(COl1,patindex(N'%元单%',reverse([Col1]))-1),N'室','')
from #T

19-3 1 301
19-1 3 201
19-2 3 501
15 4 402

(4 個資料列受到影響)

中国风 2008-09-22
  • 打赏
  • 举报
回复
顯示結果?

用substring+patindex分段取
dawugui 2008-09-22
  • 打赏
  • 举报
回复
你这个字段,没什么规则,估计是做不了的.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧