update tb2 set c=tb1.a from tb2 inner join tb1 on charindex(tb1.a,tb2.b)>=0
这样吗? /* tb1 a 安徽省安庆市 安徽省蚌埠市 安徽省亳州市 tb2 b c 安徽省安庆市枞阳县 安徽省蚌埠市蚌山区 安徽省亳州市利辛县 */ update tb2 b2 set b2.c=b1.a from tb1 b1 where charindex(b1.a,b2.b)>0
楼上的GG,试了不行。 create table tab1(a varchar(50)) gocreate table tab2(b varchar(50),c varchar(50)) goinsert into tab1(a) select '安徽省安庆市' union all select '安徽省蚌埠市' union all select '安徽省亳州市' insert into tab2(b) select '安徽省安庆市枞阳县 ' union all select '安徽省蚌埠市蚌山区' union all select '安徽省亳州市利辛县' union all select '安徽省安庆市潜山县' union all select '安徽省安庆市桐城市' union all select '安徽省蚌埠市五河县' union all select '安徽省巢湖市居巢区'
from tb2 inner join tb1
on charindex(tb1.a,tb2.b)>=0
/*
tb1
a
安徽省安庆市
安徽省蚌埠市
安徽省亳州市 tb2
b c
安徽省安庆市枞阳县
安徽省蚌埠市蚌山区
安徽省亳州市利辛县
*/
update tb2 b2 set b2.c=b1.a from tb1 b1 where charindex(b1.a,b2.b)>0
create table tab1(a varchar(50))
gocreate table tab2(b varchar(50),c varchar(50))
goinsert into tab1(a)
select '安徽省安庆市' union all
select '安徽省蚌埠市' union all
select '安徽省亳州市' insert into tab2(b)
select '安徽省安庆市枞阳县 ' union all
select '安徽省蚌埠市蚌山区' union all
select '安徽省亳州市利辛县' union all
select '安徽省安庆市潜山县' union all
select '安徽省安庆市桐城市' union all
select '安徽省蚌埠市五河县' union all
select '安徽省巢湖市居巢区'
INSERT @TB1 SELECT N'安徽省安庆市'
INSERT @TB1 SELECT N'安徽省蚌埠市'
INSERT @TB1 SELECT N'安徽省亳州市'
DECLARE @tb2 TABLE(b NVARCHAR(50),c NVARCHAR(50))
INSERT @TB2 SELECT N'安徽省安庆市枞阳县' ,NULL
INSERT @TB2 SELECT N'安徽省蚌埠市蚌山区' ,NULL
INSERT @TB2 SELECT N'安徽省亳州市利辛县' ,NULL
UPDATE @TB2 SET C=A FROM @TB1 WHERE PATINDEX('%'+A+'%',B)>0
SELECT * FROM @TB2
/*b c
-------------------------------------------------- --------------------------------------------------
安徽省安庆市枞阳县 安徽省安庆市
安徽省蚌埠市蚌山区 安徽省蚌埠市
安徽省亳州市利辛县 安徽省亳州市*/
set b.c=a.a
from tab1 a,tab2 b
where charindex(a.a,b.b)>0
------------------------------
(6 行受影响)select * from tab2
------------------------------------
安徽省安庆市枞阳县 安徽省安庆市
安徽省蚌埠市蚌山区 安徽省蚌埠市
安徽省亳州市利辛县 安徽省亳州市
安徽省安庆市潜山县 安徽省安庆市
安徽省安庆市桐城市 安徽省安庆市
安徽省蚌埠市五河县 安徽省蚌埠市
安徽省巢湖市居巢区 NULL