假設我有兩個表,每個表都有一個字符串列(名稱)。我想做一個左外從T1加入到t2其中t1.name喜歡%t2.name%或t2.name類似%t1.name%你可以使用sql()函數進行表連接嗎?
是類似的東西可能嗎?
假設我有兩個表,每個表都有一個字符串列(名稱)。我想做一個左外從T1加入到t2其中t1.name喜歡%t2.name%或t2.name類似%t1.name%你可以使用sql()函數進行表連接嗎?
是類似的東西可能嗎?
幾乎任何去在where
子句也可以去在on
條款,如:
select *
from t1
left join
t2
on t1.name like '%' + t2.name + '%'
or t2.name like '%' + t1.name + '%'
肯定。你可以這樣說:
... where t1.name like '%' + t2.name + '%'
是。從上JOIN Syntax
MySQL的文檔與所使用的conditional_expr是可以在一個WHERE子句 使用的 形式的任何條件表達式。
正如Andomar指出的,on
子句和where
子句之間沒有太大差別。
然而,在使用like
一個連接就可以在大多數情況下不好的習慣,因爲它可以(會)導致意外的結果。例如,如果兩個表中存在具有名稱A, Ab, Abc
和Abcd
行,所產生的左連接將不會只是4個行,因爲它會基本上每行第一個表匹配的每個從第二個表,你會得到結果,而不是4.
但索引不會工作,如果你在搜索字符串的前面有'%' – 2011-02-28 11:36:35
我實際上只是把%放在最後,但是謝謝你的信息。 – klochner 2011-02-28 11:45:53
'LIKE'是一個謂詞,而不是一個函數。 – onedaywhen 2011-02-28 13:05:47