我正在尝试检查一个列子字符串在另一个列中。
table1
FullName
Johns Doue
Johnny
Betty Smith, Chair table2
Name
John使用table2查看它是否是table1的子字符串。它应该会归还约翰杜伊和约翰尼。
SELECT * FROM table1.FullName AS table1
JOIN table2.Name AS table2
WHERE table2.Name LIKE SUBSTRING(table1.FullName, 0, 10);这是在比较返回null。我不知道我做错了什么。从我的逻辑来看,它似乎是从table2.name获取结果,并将其与table1.FullName的子字符串进行比较。
发布于 2016-07-06 22:25:45
您需要在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演示
发布于 2016-07-06 22:24:04
这里有一个使用join和like和concat的选项
select *
from table1 as t1
join table2 as t2 on t1.FullName like concat('%',t2.name,'%')如果您只想要以名称开头的全名,那么删除第一个'%'。
发布于 2019-12-17 01:25:27
LOCATE在某些类型的SQL (如Postgres)中不可用,显然使用字符串连接来构建SQL查询是不可取的(源:TypeError:“dict”对象不支持索引)。
您也可以使用POSITION命令:
SELECT *
FROM table1 AS t1
JOIN table2 AS t2
WHERE POSITION(t2.Name IN t1.FullName) > 0https://stackoverflow.com/questions/38234590
复制相似问题