Запрос на выбор столбца из одной таблицы, имеющей текст, подобный столбцу в другой таблице - PullRequest
0 голосов
/ 25 сентября 2018

В PostgreSQL есть две таблицы «Public domain» и «Emails». Таблица Public Domain содержит список доменов в 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

Как я могудостичь этого?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете использовать substring с position функцией как :

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
0 голосов
/ 25 сентября 2018

demo: db <> fiddle

SELECT 
    email 
FROM emails e 
JOIN domains d 
ON e.email LIKE '%@' || d.domain

Соединение таблиц с их текстами.Нормаль (CROSS) JOIN удаляет все строки, которые не совпадают.Функция соответствия email LIKE %@domain.Потому что email == something@domain объединение работает.LIKE %@domain означает именно это: «что-то», а затем @ и domain.

...