查询从一个 table 中选择列的文本类似于另一个 table 中的列
Query for selecting column from one table having text like column in another table
PostgreSQL 中有两个 table
"Public domain" 和 "Emails" Public 域 table 在 column1 中有域列表,例如abcd.com,xyz.com 等..
Table-"Public domain"
sr.no domains
1 yahoo.com
2 gmail.com
3 hotmail.com
Table-"Emails"
sr.no emails
1 abcd@gmail.com
2 efgh@hotmail.com
3 pqr@xyz.com
The query should return:
abcd@gmail.com
efgh@hotmail.com
我怎样才能做到这一点?
SELECT
email
FROM emails e
JOIN domains d
ON e.email LIKE '%@' || d.domain
根据他们的文本加入表格。正常的 (CROSS
) JOIN
消除所有不匹配的行。匹配函数为email LIKE %@domain
。因为 email == something@domain
连接有效。 LIKE %@domain
完全代表这个:"something" 然后是 @
和 domain
.
您可以将 substring
与 position
函数一起使用 as :
select e.emails
from Emails as e
join PublicDomain as p
on ( substring(e.emails,position('@' in e.emails)+1,length(e.emails)) = p.domains );
emails
---------------
abcd@gmail.com
efgh@hotmail.com
PostgreSQL 中有两个 table "Public domain" 和 "Emails" Public 域 table 在 column1 中有域列表,例如abcd.com,xyz.com 等..
Table-"Public domain"
sr.no domains
1 yahoo.com
2 gmail.com
3 hotmail.com
Table-"Emails"
sr.no emails
1 abcd@gmail.com
2 efgh@hotmail.com
3 pqr@xyz.com
The query should return:
abcd@gmail.com
efgh@hotmail.com
我怎样才能做到这一点?
SELECT
email
FROM emails e
JOIN domains d
ON e.email LIKE '%@' || d.domain
根据他们的文本加入表格。正常的 (CROSS
) JOIN
消除所有不匹配的行。匹配函数为email LIKE %@domain
。因为 email == something@domain
连接有效。 LIKE %@domain
完全代表这个:"something" 然后是 @
和 domain
.
您可以将 substring
与 position
函数一起使用 as :
select e.emails
from Emails as e
join PublicDomain as p
on ( substring(e.emails,position('@' in e.emails)+1,length(e.emails)) = p.domains );
emails
---------------
abcd@gmail.com
efgh@hotmail.com