如何搜索另一个表中的另一列的每一行的表列
问题描述:
这是很难解释,但是,我有一个表(租户)与列称为居住者。我想知道列中的值是否完全/部分地与另一个表(冒犯性)中的值匹配,只有一列称为bad_words。如何搜索另一个表中的另一列的每一行的表列
即
tbl_Tenant.Occupant
------------------
Julia f*t
P*y Girl
Gary A*e
tbl_Offensive.bad_words
---------
s*t
f*t
p*y
a*e
我知道下面的查询是不正确,但我想这样做,但不能认为正确的方法来脚本它。
select * from tbl_tenant t
where t.occupant like '%(select o.bad_words from tbl_offensive o)%'
有人可以帮忙!
答
此线非常相似:SQL: Join tables on substrings
翻译为你的表:
Select *
From tbl_Tenant t
Inner Join tbl_Offensive As o
on (o.bad_words like '%'+t.Occupant+'%')
答
它最多可以工作:
Select *
From tbl_Tenant As T
cross join tbl_Offensive As O
Where (O.bad_words like '% ' + T.Occupant + ' %')
Or
(O.bad_words like T.Occupant + ' %')
Or
(O.bad_words like '% ' + T.Occupant)
@ArdalanShahgholi您好,感谢您的回复。我正在搜索大约600万条记录。这段代码是否有另一个优化版本,因为它将永远运行。也有一种方法来检索记录,如果有单词匹配,即'约翰猫咪massod'。这应该返回,因为'猫'匹配。不是因为'屁股'在'massod'中找到。您的代码同时找到“猫”和“massod” – 2014-12-03 11:07:40
我稍微改变立法院上面的代码:SELECT * 从tbl_Tenant牛逼 内加入tbl_Offensive邻 上(o.bad_words LIKE“%‘+ t.Occupant +’%” )。这工作奇迹。感谢所有的帮助。我会投票你的答案 – 2014-12-03 11:16:33