mysql - 检查一列的值是否包含另一列的值

标签 mysql sql

我有一个包含 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

好吧,你的选择不多 ;)

SqlFiddle

关于mysql - 检查一列的值是否包含另一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12424737/

相关文章:

php - 如何使用 symfony2 导入邮件?

php - 从db2中选择并插入mysql中不存在的地方

sql - 将数据从 .txt 文件导入到 SQL Server 2005 Express

mysql - 当角色完全不同时,将用户登录名和密码存储在数据库中的方法

sql - Magento SQL 查询显示产品制造商

mysql - SELECT...HAVING 结果中的总和和小计

java - MyBatisGenerator.generate(null) 不执行任何操作,没有错误

sql - 在 mySQL 的 WHERE IN 子句中保持排序

php - 使用 Laravel 迁移重命名现有列,然后运行 ​​php artisan migrate :refresh successfully

php - 帖子的 WordPress 术语列表