我有一个包含 java 包名称的表:
|id|pkg|
|1 |some.long.package.path|
|2 |com.admob.bla|
以及包含来自已知广告框架的部分包名称的表格。
|id|path_fragment|
|1 |.admob |
如何检索 pkg 值包含任何 ad_frameworks.path_fragment 的包?
我只是找不到子字符串检查。我只发现人们使用 like 来与某些字符串文字进行比较,但从不用于比较列。
注意:我正在使用 MySQL。
最佳答案
认为你可以用一个 like 做一个内部连接
select p.id, p.pkg
from package p
inner join ad_frameworks adf on p.pkg like CONCAT('%', adf.path_fragment, '%')
--group by p.id, p.pkg
或者如你所指
select *
from package p
inner join ad_frameworks adf on LOCATE(adf.fragment, p.pkg) > 0
或
select *
from package p
inner join ad_frameworks adf on INSTR( p.pkg,adf.fragment) > 0
或
select *
from package p
inner join ad_frameworks adf on POSITION(adf.fragment IN p.pkg) > 0
或
select *
from package p
inner join ad_frameworks adf on REPLACE(p.pkg, adf.fragemnt, '') <> p.pkg
好吧,你的选择不多 ;)
关于mysql - 检查一列的值是否包含另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424737/