是否有一个Hive相当于SQL"不喜欢"

CMa*_*ury 22 syntax hive sql-like

虽然Hive支持积极的查询:ex.

select*from table_name其中column_name 类似'root~%' ;

Hive 支持负面查询:ex.

select*from table_name其中column_name 不像'root~%' ;

有没有人知道Hive支持的等效解决方案?

小智 47

试试这个:

Where Not (Col_Name like '%whatever%')
Run Code Online (Sandbox Code Playgroud)

也适用于rlike:

Where Not (Col_Name rlike '.*whatever.*')
Run Code Online (Sandbox Code Playgroud)


San*_*jiv 8

在HIVE版本0.8.0中支持NOT LIKE,请在JIRA查看.

https://issues.apache.org/jira/browse/HIVE-1740


min*_*s23 5

在SQL中:

select * from table_name where column_name not like '%something%';
Run Code Online (Sandbox Code Playgroud)

在Hive中:

select * from table_name where not (column_name like '%something%');
Run Code Online (Sandbox Code Playgroud)


Qui*_*nnG 3

如果还没有,请查看https://cwiki.apache.org/confluence/display/Hive/LanguageManual 。当我为 hive 编写查询时,我总是引用它。

我没有做过任何尝试匹配单词的一部分的事情,但您可以查看RLIKE(在本节中https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators

这可能有点像黑客工作,但是您可以执行一个子查询,检查它是否与正值匹配并执行CASEhttp://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions)为主查询提供一个已知值来检查它是否匹配。

另一种选择是编写一个执行检查的 UDF。

我只是坐在家里进行头脑风暴,无法访问 Hive,所以我可能会错过一些明显的东西。:)

希望这能以某种方式有所帮助。\^_^/

编辑:从我下面的评论中添加附加方法。

对于您提供的示例 colName RLIKE '[^r][^o][^o][^t]~\w' 这可能不是最佳的正则表达式,但需要研究而不是子查询