如果一个字符串出现在另一个字符串中,则 SQL 连接表

标签 sql postgresql

假设有两个表

表A:

**Middle_name**
John
Joe
Fred

表 B:

**Full_name**
Billy, Joe-Bob
JasonFredAnderson
Tom John Jefferson

我想加入 Middle_nameFull_name 上的表。

我试过使用如下所示的部分字符串匹配,但没有奏效。由于某种原因,它不匹配全名和中间名前的逗号。使用 postgres。

SELECT Full_name, Middle_name
FROM B
JOIN A
ON B.Full_name LIKE CONCAT('%', A.Middle_name, '%')

重申一下,上面的查询会正确连接 FredJohn,但不会连接 Joe,因为 Billy, Joe-Bob Joe 之前有一个逗号。

最佳答案

我相信您可以通过这种方式使用 POSITIION() 函数来做到这一点:

SELECT Full_name, Middle_name
FROM B
JOIN A
ON POSITION(Middle_name IN Full_name)>0 

关于如果一个字符串出现在另一个字符串中,则 SQL 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55266024/

相关文章:

postgresql - 将年和月变量转换为 Postgresql 中的时间戳

android - 如何使用 SQLite 数据库中的凭据验证用户输入的凭据

mysql - 多维 "WHERE IN"条件?

sql - 内部联接顺序在我的查询中确实很重要

sql - Postgresql:如何逐行连接表?

django - heroku、postgreSQL、django、comments、tastypie : No operator matches the given name and argument type(s). 您可能需要添加显式类型转换

java - 如何在 JDBC 中创建断言?

mysql - SQL 存储过程获取用户对象,然后更新该对象的值

mysql - 选择所有值都大于特定值的 ID

postgresql - postgres 9.6 设置赋予用户对数据库的权限