declare @tbA table([名称] nvarchar(20)) insert into @tbA select 'XX市XX区第二人民医院' union all select 'XX市XX区第一人民医院' union all select 'XX市XX区第三人民医院' union all select 'XX市XX区医院' union all select 'XX市XX区人民医院' declare @tbB table([名称] nvarchar(20))insert into @tbB select 'XX区第二人民医院' union all select 'XX区第一人民医院' union all select '第三人民医院'SELECT * FROM @tbA A LEFT JOIN @tbB B ON 1=1 WHERE charindex(B.[名称],A.[名称])>0 /* 名称 名称 -------------------- -------------------- XX市XX区第二人民医院 XX区第二人民医院 XX市XX区第一人民医院 XX区第一人民医院 XX市XX区第三人民医院 第三人民医院 */
declare @tbA table([名称] nvarchar(20)) insert into @tbA select 'XX县金电酒店' union all select 'XX县恒大宾馆' union all select 'XX县京广大厦' union all select 'XX县台南宾馆' union all select 'XX县富都宾馆' union all select 'XX县曙光旅店' declare @tbB table([名称] nvarchar(20))insert into @tbB select 'XX口岸医院' union all select 'XX市职工医院' union all select 'XX县新源联营加油站' union all select 'XX县石油企业集团公司水东加油站' union all select 'XX县电城镇农业银行' union all select 'XX县电城镇卫生院' union all select 'XX县电城镇人民政府' union all select 'XX市XX县恒大宾馆' union all select 'XX市XX县京广大厦' union all select 'XX市XX县台南宾馆' SELECT * FROM @tbA A LEFT JOIN @tbB B ON 1=1 WHERE (charindex(B.[名称],A.[名称])>0) or (charindex(A.[名称],B.[名称])>0)/* 名称 名称 -------------------- -------------------- XX县恒大宾馆 XX市XX县恒大宾馆 XX县京广大厦 XX市XX县京广大厦 XX县台南宾馆 XX市XX县台南宾馆 */
insert into @tbA
select 'XX市XX区第二人民医院' union all
select 'XX市XX区第一人民医院' union all
select 'XX市XX区第三人民医院' union all
select 'XX市XX区医院' union all
select 'XX市XX区人民医院' declare @tbB table([名称] nvarchar(20))insert into @tbB
select 'XX区第二人民医院' union all
select 'XX区第一人民医院' union all
select '第三人民医院'SELECT * FROM @tbA A
LEFT JOIN @tbB B ON 1=1
WHERE charindex(B.[名称],A.[名称])>0
/*
名称 名称
-------------------- --------------------
XX市XX区第二人民医院 XX区第二人民医院
XX市XX区第一人民医院 XX区第一人民医院
XX市XX区第三人民医院 第三人民医院
*/
比如表1名称字段中有以下内容
XX县金电酒店
XX县恒大宾馆
XX县京广大厦
XX县台南宾馆
XX县富都宾馆
XX县曙光旅店 表2名称字段中有以下内容
XX口岸医院
XX市职工医院
XX县新源联营加油站
XX县石油企业集团公司水东加油站
XX县电城镇农业银行
XX县电城镇卫生院
XX县电城镇人民政府
XX市XX县恒大宾馆
XX市XX县京广大厦
XX市XX县台南宾馆
红色字体的内容其实都是同一个单位名称,只是表2的内容中多了XX市,但如果直接匹配的话就匹配不上嘛,听说要把记录读到一个临时表然后一条条记录匹配近似值。本人比较菜,希望各位多多包涵。
我再举下例子:
比如表1名称字段中有以下内容
XX县金电酒店
XX县恒大宾馆
XX县京广大厦
XX县台南宾馆
XX县富都宾馆
XX县曙光旅店 表2名称字段中有以下内容
XX口岸医院
XX市职工医院
XX县新源联营加油站
XX县石油企业集团公司水东加油站
XX县电城镇农业银行
XX县电城镇卫生院
XX县电城镇人民政府
XX市XX县恒大宾馆
XX市XX县京广大厦
XX市XX县台南宾馆
红色字体的内容其实都是同一个单位名称,只是表2的内容中多了XX市,但如果直接匹配的话就匹配不上嘛,听说要把记录读到一个临时表然后一条条记录匹配近似值。本人比较菜,希望各位多多包涵。
declare @tbA table([名称] nvarchar(20))
insert into @tbA
select 'XX县金电酒店' union all
select 'XX县恒大宾馆' union all
select 'XX县京广大厦' union all
select 'XX县台南宾馆' union all
select 'XX县富都宾馆' union all
select 'XX县曙光旅店' declare @tbB table([名称] nvarchar(20))insert into @tbB
select 'XX口岸医院' union all
select 'XX市职工医院' union all
select 'XX县新源联营加油站' union all
select 'XX县石油企业集团公司水东加油站' union all
select 'XX县电城镇农业银行' union all
select 'XX县电城镇卫生院' union all
select 'XX县电城镇人民政府' union all
select 'XX市XX县恒大宾馆' union all
select 'XX市XX县京广大厦' union all
select 'XX市XX县台南宾馆' SELECT * FROM @tbA A
LEFT JOIN @tbB B ON 1=1
WHERE (charindex(B.[名称],A.[名称])>0) or (charindex(A.[名称],B.[名称])>0)/*
名称 名称
-------------------- --------------------
XX县恒大宾馆 XX市XX县恒大宾馆
XX县京广大厦 XX市XX县京广大厦
XX县台南宾馆 XX市XX县台南宾馆
*/