我正在尝试检查一列子字符串是否在另一列中
表1
FullName
Johns Doue
Johnny
Betty Smith, Chair
表2
Name
John
用table2看是不是table1的子串。它应该返回 Johns Doue 和 Johnny。
SELECT * FROM table1.FullName AS table1
JOIN table2.Name AS table2
WHERE table2.Name LIKE SUBSTRING(table1.FullName, 0, 10);
这是返回正在比较的空值。我不确定我做错了什么。从我的逻辑来看,它似乎是从 table2.name 中获取结果并与 table1.FullName 的子字符串进行比较。
最佳答案
您需要在 LIKE
模式中放置通配符,以使其查找子字符串。您似乎还在 SELECT
语法中混淆了表名和列名。
SELECT *
FROM table1 AS t1
JOIN table2 AS t2
WHERE t1.FullName LIKE CONCAT('%', t2.Name, '%')
您也可以使用 LOCATE
而不是 LIKE
SELECT *
FROM table1 AS t1
JOIN table2 AS t2
WHERE LOCATE(t2.Name, t1.FullName) > 0
关于mysql - sql检查列是否是另一列的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234590/