虽然 Hive 支持积极的类似查询:例如。
select * from table_name where column_name like 'root~%' ;
Hive不支持否定查询:例如。
select * from table_name where column_name not like 'root~%' ;
有谁知道 Hive 支持的等效解决方案?
试试这个:
Where Not (Col_Name like '%whatever%')
也适用于 rlike:
Where Not (Col_Name rlike '.*whatever.*')
HIVE 0.8.0 版已支持 NOT LIKE,请查看 JIRA。
在 SQL 中:
select * from table_name where column_name not like '%something%';
在蜂巢中:
select * from table_name where not (column_name like '%something%');
如果您还没有,请查看https://cwiki.apache.org/confluence/display/Hive/LanguageManual 。当我为 hive 编写查询时,我一直引用它。
我没有做任何尝试匹配单词的一部分的事情,但是您可以查看RLIKE
(在本节中https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators)
这可能是一项 hack 工作,但您可以执行子查询,检查它是否与正值匹配并执行CASE
( http://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions )为主查询提供一个已知值,以检查它是否匹配。
另一种选择是编写一个进行检查的 UDF。
我只是在无法访问 Hive 的情况下坐在家里进行头脑风暴,所以我可能会遗漏一些明显的东西。:)
希望以某种方式有所帮助。\^_^/
编辑:从我下面的评论中添加其他方法。
对于您提供的示例 colName RLIKE '[^r][^o][^o][^t]~\w' 这可能不是最佳的正则表达式,但需要研究而不是子查询
使用 regexp_extract 也可以:
select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
实际上,你可以这样写:
select * from table_name where not column_name like 'root~%';
在黑斑羚中,您可以使用!=
不喜欢:
columnname != value
正如@Sanjiv回答的那样
蜂巢有支持not like
0: hive> select * from dwtmp.load_test;
+--------------------+----------------------+
| load_test.item_id | load_test.item_name |
+--------------------+----------------------+
| 18282782 | NW |
| 1929SEGH2 | BSTN |
| 172u8562 | PLA |
| 121232 | JHK |
| 3443453 | AG |
| 198WS238 | AGS |
+--------------------+----------------------+
6 rows selected (0.224 seconds)
0: hive> select * from dwtmp.load_test where item_name like '%ST%';
+--------------------+----------------------+
| load_test.item_id | load_test.item_name |
+--------------------+----------------------+
| 1929SEGH2 | BSTN |
+--------------------+----------------------+
1 row selected (0.271 seconds)
0: hive> select * from dwtmp.load_test where item_name not like '%ST%';
+--------------------+----------------------+
| load_test.item_id | load_test.item_name |
+--------------------+----------------------+
| 18282782 | NW |
| 172u8562 | PLA |
| 121232 | JHK |
| 3443453 | AG |
| 198WS238 | AGS |
+--------------------+----------------------+
5 rows selected (0.247 seconds)