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)
在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)
如果还没有,请查看https://cwiki.apache.org/confluence/display/Hive/LanguageManual 。当我为 hive 编写查询时,我总是引用它。
我没有做过任何尝试匹配单词的一部分的事情,但您可以查看RLIKE(在本节中https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators)
这可能有点像黑客工作,但是您可以执行一个子查询,检查它是否与正值匹配并执行CASE(http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions)为主查询提供一个已知值来检查它是否匹配。
另一种选择是编写一个执行检查的 UDF。
我只是坐在家里进行头脑风暴,无法访问 Hive,所以我可能会错过一些明显的东西。:)
希望这能以某种方式有所帮助。\^_^/
编辑:从我下面的评论中添加附加方法。
对于您提供的示例 colName RLIKE '[^r][^o][^o][^t]~\w' 这可能不是最佳的正则表达式,但需要研究而不是子查询