2014-12-02 117 views
-3

這是很難解釋,但是,我有一個表(租戶)與列稱爲居住者。我想知道列中的值是否完全/部分地與另一個表(冒犯性)中的值匹配,只有一列稱爲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

此線非常相似:SQL: Join tables on substrings

翻譯爲你的表:

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

@ArdalanShahgholi您好,感謝您的回覆。我正在搜索大約600萬條記錄。這段代碼是否有另一個優化版本,因爲它將永遠運行。也有一種方法來檢索記錄,如果有單詞匹配,即'約翰貓咪massod'。這應該返回,因爲'貓'匹配。不是因爲'屁股'在'massod'中找到。您的代碼同時找到「貓」和「massod」 – 2014-12-03 11:07:40

+0

我稍微改變立法院上面的代碼:SELECT * 從tbl_Tenant牛逼 內加入tbl_Offensive鄰 上(o.bad_words LIKE「%‘+ t.Occupant +’%」 )。這工作奇蹟。感謝所有的幫助。我會投票你的答案 – 2014-12-03 11:16:33

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) 
相關問題