我有两个表
表一
商家
嘉兴市金茂家电有限公司
台州市路桥汇通电器有限公司
浙江风行电器有限公司
慈溪市甬菱电器有限公司
浙江杭州淳安县美大电器
泰州市海陵区海长电器经营部(长海)
徐州市天循电器设备有限公司(超军)
江苏省常熟市日用杂品果品总公司交家电公司
盐城大丰市大中天长电器经营部
盐城市海迪贸易有限公司
吴江市荣智家电有限公司
表二
商家 回款
嘉兴金茂 222
台州路通 333
。。。。 ,,,
大丰天长 。。。
就是表一的简称,请教如何将表二的回款和表一对应起来,别说一个个填,,有好几千家
------解决方案--------------------
给你弄个函数吧,供参考
create function dbo.f_string (@string1 varchar(20),@string2 varchar(50))
returns int as
begin
declare @result int
declare @s varchar(10)
while @string1<>''
begin
set @s=SUBSTRING(@string1,1,1)
if CHARINDEX(@s,@string2)>0
begin
set @result=1
end
else
begin
set @result=0
end
set @string1=STUFF(@string1,1,1,'')
end
return @result
end
select dbo.f_string('格力','珠海格力电器') 结果为1
select dbo.f_string('格力的','珠海格力电器') 结果为0
如果要更复杂的判断,自己去改函数
------解决方案--------------------
if object_id('tempdb..#a','U') is not null
drop table #a
if object_id('tempdb..#b','U') is not null
drop table #b
go
create table #a (company varchar(200))
create table #b (companySimple varchar(50),payAccount int)
go
insert into #a (company)
values( '嘉兴市金茂家电有限公司'),
( '台州市路桥汇通电器有限公司'),
( '浙江风行电器有限公司'),
( '慈溪市甬菱电器有限公司'),
( '浙江杭州淳安县美大电器'),
( '泰州市海陵区海长电器经营部(长海)'),
( '徐州市天循电器设备有限公司(超军)'),
( '江苏省常熟市日用杂品果品总公司交家电公司'),
( '盐城大丰市大中天长电器经营部'),
( '盐城市海迪贸易有限公司'),
( '吴江市荣智家电有限公司');
insert into #b (companysimple,payAccount)
values( '嘉兴金茂', 222),
('台州路通', 333);
/******************************************************************************
**根据#b名称,可以发现
**简称是由[市名]+[公司名简称]组成
**建议博主改下设计思路
**解决语句,仅就问题解决而写
*******************************************************************************/
select a.company from #a as a inner join #b as b on a.company like '%'+left(b.companysimple,2)+'%' and a.company like '%'+right(b.companysimple,2)+'%'
--结果展示 由于没有台州路通,因此结果集为一
/*
company companySimple payAccount
-------------------------- -------------------------------------------------- -----------
嘉兴市金茂家电有限公司 嘉兴金茂 222
(1 行受影响)
*/