日期:2014-05-18  浏览次数:20588 次

求助!!!SQL如何根据一个表中字典项查询另一个表中的字段,并修改相应的数据
表1
id 描述 标准地址
1 雁塔路30号

2 北山门口村

3 长安路100号

4 地址不详

5 北山门村

6 雁塔南路

表2
id 字典项 标准地址
1 北山门 北山门村 

2 雁塔路 雁塔路

3 雁塔南路 雁塔南路

4 长安路 长安路

5 铁一村 铁炉庙村

6 铁二村 铁炉庙村


SQL中如何做到根据表2中的字典项对表1进行操作,将表1中包含表2字典项的某行的标准地址字段规范为表2中的标准地址字段,使表1达到如下结果:
id 描述 标准地址
1 雁塔路30号 雁塔路

2 北山门口村 北山门村

3 长安路100号 长安路

4 地址不详

5 北山门村 北山门村

6 雁塔南路 雁塔路

五体投地跪拜各位老大帮帮小弟,急啊,求告人指点

------解决方案--------------------
SQL code

 IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = '表1')
 BEGIN
    DROP TABLE 表1
 END
 GO
 CREATE TABLE 表1
 (
    id INT,
    描述 VARCHAR(100),
    标准地址 VARCHAR(100)
 )
 GO
 
 INSERT INTO 表1
 SELECT 1,'雁塔路30号','' UNION

 SELECT 2,'北山门口村','' UNION

 SELECT 3, '长安路100号','' UNION

 SELECT 4, '地址不详','' UNION

 SELECT 5, '北山门村','' UNION

 SELECT 6, '雁塔南路','' 

 IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = '表2')
 BEGIN
    DROP TABLE 表2
 END
 GO
 CREATE TABLE 表2
 (
    id INT,
    字典项 VARCHAR(100),
    标准地址 VARCHAR(100)
 )
 GO
INSERT INTO 表2
SELECT 1, '北山门', '北山门村'  UNION

SELECT 2, '雁塔路', '雁塔路'  UNION

SELECT 3, '雁塔南路', '雁塔南路'  UNION

SELECT 4, '长安路', '长安路'  UNION

SELECT 5, '铁一村', '铁炉庙村'  UNION

SELECT 6, '铁二村', '铁炉庙村'


UPDATE 表1 SET 表1.标准地址 = B.标准地址 FROM 表2 AS B WHERE CHARINDEX(B.字典项,表1.描述) > 0


SELECT * FROM 表1

id    描述    标准地址
1    雁塔路30号    雁塔路
2    北山门口村    北山门村
3    长安路100号    长安路
4    地址不详    
5    北山门村    北山门村
6    雁塔南路    雁塔南路

------解决方案--------------------
update 表1 set 标准地址=b.标准地址
from 表1 a ,表2 b
where b.字典项 like a.描述+'%'