[英]Using LIKE in JOIN query if values for join are in specfic set
我有两套:
我想找出集合2中的“名称”是否类似/包含集合1中的任何名称,例如:
如何在HIVE SQL中执行此操作?
select a.*, b.name as name_from_email
from set2 a left join
set1 b
on a.email_name rlike concat('%',b.name,'%')
我收到错误消息:“ JOIN''%''中同时遇到左右别名:28:27,org.apache.hive.service.cli.operation.Operation:toSQLException:Operation.java:323,“
您可以像下面这样使用instr:
on(1=1) where instr(a.email_name, b.name) != 0
我知道这很痛苦,但这可以解决问题
干杯!!
您可以痛苦地做到这一点来获得匹配:
select a.*, b.name as name_from_email
from set2 a cross join
set1 b
where a.email_name rlike concat('%', b.name, '%');
获取其他不匹配的行是很痛苦的。 我认为这应该工作:
select a.*, b.name as name_from_email
from set2 a cross join
set1 b
where a.email_name rlike concat('%', b.name, '%');
union all
select a.*, null
from set2 a
where not exists (select 1
from set1 b
where a.email_name rlike concat('%', b.name, '%')
);
注意:您可能会发现该程序可以编译,但实际上无法运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.