【问题标题】:Dynamic condition in LIKE clause in a Hive queryHive 查询中 LIKE 子句中的动态条件
【发布时间】:2017-10-11 19:20:13
【问题描述】:

通常,当我在配置单元查询中应用 LIKE 条件时,我会应用这样的静态条件-

select * from table where col1 like '%abc%';

我有一个用例,我希望 LIKE 条件是动态的,我希望参数 '%abc%' 来自另一个配置单元表中的列,所以像这样-

select * from table where col1 like (select regex from table2);

无论如何我可以在 Hive 中做到这一点吗?

通常在 SQL 中,我可以通过带有 LIKE 条件的连接来实现,但据我所知,Hive 只允许相等连接。

【问题讨论】:

    标签: sql hadoop hive hiveql


    【解决方案1】:

    至少最新版本的 Hive 支持非等值连接(请参阅here)。

    所以,你应该可以做到:

    select t.*
    from table t join
         table2 t2
         on t.col1 like t2.regex;  
    

    请注意like 模式不等同于正则表达式。 where col1 like (select regex from table2);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 2010-11-09
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多