列是否包含其他列字符串的某些部分? (postgres的)

时间:2014-07-29 15:00:53

标签: sql postgresql

我想检查列字符串是否包含在另一列中。

表格电子邮件:

    complete_email
---------------------------------
    zazumba@hotmail.com
    jere@yahoo.com
    maryhelp@aol.com
    neil@cde.de
    john_smith@zodll.ne

表格电子邮件:

    username
--------------------
    zazumba
    maryhelp
    neil

我想要执行的查询:

select e.complete_email 
   from emailslist e, emailpartial ep 
      where e.complete_email like '%ep.username%';

我希望结果如下:

    complete_email
---------------------------
    zazumba@hotmail.com
    maryhelp@aol.com
    neil@cde.de

但是,这不是编写此SQL查询的正确方法。有人可以澄清我怎么写它?

谢谢Samuel

2 个答案:

答案 0 :(得分:3)

我确实相信你所寻找的是:

select e.complete_email 
from emailslist e, emailpartial ep 
where e.complete_email like '%' || ep.username || '%';

答案 1 :(得分:2)

您可以使用内置函数strpos()

select e.complete_email 
from emailslist e
join emailpartial ep 
  on strpos(e.complete_email, ep.username) > 0

,如果使用like,则可避免不必要的连接。

请注意,使用正确的连接语法对连接进行编码是最佳做法。