如何针对另一个表中的另一列搜索每一行的表列

时间:2014-12-02 22:23:00

标签: sql-server tsql

这很难解释,但我有一个表(租户),其中有一个名为占用者的列。我想知道列中的值是完全/部分匹配另一个表中的值(令人反感)只有一个名为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)%'

有人可以帮忙!

2 个答案:

答案 0 :(得分:2)

此主题非常相似:SQL: Join tables on substrings

为您的表格翻译:

Select * 
From tbl_Tenant t 
Inner Join tbl_Offensive As o 
   on ( o.bad_words like '%'+t.Occupant+'%' )

答案 1 :(得分:1)

最重要的是:

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 )