mysql - 使用 LIKE 和 CONCAT % 比较两个表

标签 mysql pattern-matching sql-like concatenation

我有两张 table

USERS 包含用户数据

手机
447777744444
447777755555
7777755555
7777766666

MOBILEPHONES 包含手机号码

电话
7777744444
7777733333
7777755555
7777766666

如果我运行以下 SQL,它只会返回完全匹配的数字,并且不会执行通配符搜索。

SELECT MobilePhones.*, users.FirstName FROM MobilePhones
LEFT JOIN users
ON (users.MobilePhone= MobilePhones.`Telephone No`)
WHERE users.MobilePhone LIKE CONCAT('%', MobilePhones.`Telephone No`, '%')

我回来了

7777755555
7777766666

我想要的是

7777755555
7777766666
447777755555
447777744444

最佳答案

我认为您可能希望将 WHERE 子句移动到连接的 ON 子句中,替换现有的 ON 子句,即做完全匹配:

SELECT MobilePhones.*, users.FirstName 
FROM MobilePhones
LEFT JOIN users ON users.MobilePhone LIKE CONCAT('%', MobilePhones.`Telephone No`, '%')

关于mysql - 使用 LIKE 和 CONCAT % 比较两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10637339/

相关文章:

mysql - 按支出金额选择 SUM 用户

mysql - mysql索引中的顺序的目的是什么

c# - 为模式匹配解构元组

sql - 如何匹配以 DB2 上的文本结尾的文本?

mysql - 如何在逗号分隔值中使用 MySQL LIKE

php - 使用查询 (SQL) 从所有三个表获取数据

mysql - 包含 where 和 where not in 的复杂 SQL 查询

regex - 交替字符的匹配模式

javascript - 正则表达式匹配是否包含彼此相邻的相同字符 0 或 2 或 4 次

mysql - SQL INNER JOIN 与 LIKE 和 WHERE