假设我有两个表,每个表都有一个字符串列(名称)。我想做一个左外从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