SQL数据库中两个表的字段之间模糊匹配

时间:2021-02-14 08:56:16
表:

A表:ID、姓名、工作单位、户口、身份证号、合同开始时间、合同起止时间。
B表:ID、姓名、单位。

要求:实现A表的工作单位和B表的单位要模糊匹配,且A表的姓名要和B表的姓名一样。

类似这样的句子:select * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%b.单位%' or b.单位 like '%a.工作单位%');

上面这句话是不正确的,但就想实现这个效果,还是请高手们解决一下吧。谢谢了。

本人是菜鸟,希望您能给提供一下具体方法,十分感谢。

18 个解决方案

#1


select * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');--用加號

#2


select * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位+'%' or b.单位 like '%'+a.工作单位+'%');--用加號

#3


select * 
from a,b 
where a.姓名 = b.姓名 and (charindex(b.单位,a.工作单位)>0 or charindex(a.工作单位,b.单位)>0); 

#4


引用 1 楼 roy_88 的回复:
SQL codeselect * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');--用加號

#5


我想问问楼主,象 
好又多市场

好又多超级市场
这样要不要模糊匹配呢

#6


declare @A表 table (姓名 varchar(10), 单位 varchar(100))
declare @B表 table (姓名 varchar(10),单位 varchar(100)) 
insert  @A表 select '張三','航天公司'
insert  @A表 select '李四','石化公司'
insert  @B表 select '張三','航天'
insert  @B表 select '王五','科技電子'
select * from  @A表 a, @B表 b where a.姓名=b.姓名 and( patindex('%'+a.单位+'%',b.单位)>0  or patindex('%'+b.单位+'%',a.单位)>0)  

#7


select * 
from a,b 
where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位+'%' or b.单位 like '%'+a.工作单位+'%')

#8


我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢

需要批配的。

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢

#9


select * 
from a inner join b on a.姓名 = b.姓名 
where (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');

这条语句楼主试衣下。

#10


呵呵,谢谢了,LS的方法和前面的朋友给的结果一样,谢谢了。

#11


使用动态SQL语句.

#12


引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢


要匹配的话就麻烦了,上面的方法都不能匹配哦

#13


学习。。。

#14


是不是要用存储过程?求解中,谢谢。

#15


引用 12 楼 tangserver 的回复:
引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢 
 

要匹配的话就麻烦了,上面的方法都不能匹配哦


求解谢谢。

#16


引用 12 楼 tangserver 的回复:
引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢 
 

要匹配的话就麻烦了,上面的方法都不能匹配哦


说的不错,前面的方法都不符合楼主的要求

#17


好像可以用全文索引的CONTAINS布尔逻辑检索

#18


引用 13 楼 simple870617 的回复:
学习。。。

#1


select * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');--用加號

#2


select * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位+'%' or b.单位 like '%'+a.工作单位+'%');--用加號

#3


select * 
from a,b 
where a.姓名 = b.姓名 and (charindex(b.单位,a.工作单位)>0 or charindex(a.工作单位,b.单位)>0); 

#4


引用 1 楼 roy_88 的回复:
SQL codeselect * from a,b where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');--用加號

#5


我想问问楼主,象 
好又多市场

好又多超级市场
这样要不要模糊匹配呢

#6


declare @A表 table (姓名 varchar(10), 单位 varchar(100))
declare @B表 table (姓名 varchar(10),单位 varchar(100)) 
insert  @A表 select '張三','航天公司'
insert  @A表 select '李四','石化公司'
insert  @B表 select '張三','航天'
insert  @B表 select '王五','科技電子'
select * from  @A表 a, @B表 b where a.姓名=b.姓名 and( patindex('%'+a.单位+'%',b.单位)>0  or patindex('%'+b.单位+'%',a.单位)>0)  

#7


select * 
from a,b 
where a.姓名 = b.姓名 and (a.工作单位 like '%'+b.单位+'%' or b.单位 like '%'+a.工作单位+'%')

#8


我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢

需要批配的。

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢

#9


select * 
from a inner join b on a.姓名 = b.姓名 
where (a.工作单位 like '%'+b.单位'+%' or b.单位 like '%'+a.工作单位+'%');

这条语句楼主试衣下。

#10


呵呵,谢谢了,LS的方法和前面的朋友给的结果一样,谢谢了。

#11


使用动态SQL语句.

#12


引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢


要匹配的话就麻烦了,上面的方法都不能匹配哦

#13


学习。。。

#14


是不是要用存储过程?求解中,谢谢。

#15


引用 12 楼 tangserver 的回复:
引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢 
 

要匹配的话就麻烦了,上面的方法都不能匹配哦


求解谢谢。

#16


引用 12 楼 tangserver 的回复:
引用 8 楼 c_h_l 的回复:
我想问问楼主,象 
好又多市场 
跟 
好又多超级市场 
这样要不要模糊匹配呢 

需要批配的。 

谢谢楼上的兄弟们,谢谢你们的帮助。方法还不止一种,呵呵。又学东西 了。谢谢 
 

要匹配的话就麻烦了,上面的方法都不能匹配哦


说的不错,前面的方法都不符合楼主的要求

#17


好像可以用全文索引的CONTAINS布尔逻辑检索

#18


引用 13 楼 simple870617 的回复:
学习。。。