mysql - sql检查列是否是另一列的子字符串

标签 mysql sql

我正在尝试检查一列子字符串是否在另一列中

表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

DEMO

关于mysql - sql检查列是否是另一列的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234590/

相关文章:

使用准备好的语句的 php 更新查询不起作用

c# - 使用 C# 使用加载数据本地 infile 时出错

mysql - VB.Net "mask"组合框文本作为另一个文本

sql - DB2 - 生成具有特定长度的随机字符串

sql - 查询交叉 TableView

php - SQL值必须大于其他值达到一个值

mysql - Like 影响 count() 的结果

php - MySQL 从数组中获取行

mysql - SQL:select 语句中的聚合函数,带有涉及 group by 子句的连接

mysql - 列数据类型 - mySQL