虽然Hive支持积极的查询:ex。
从table_name中选择*,其中column_name 类似于'root~%';
Hive 不支持类似查询的否定:例如
从table_name中选择*其中column_name 不像'root~%';
有没有人知道Hive支持的等效解决方案?
答案 0 :(得分:46)
试试这个:
Where Not (Col_Name like '%whatever%')
也适用于rlike:
Where Not (Col_Name rlike '.*whatever.*')
答案 1 :(得分:8)
不喜欢HIVE版本0.8.0,请查看JIRA。
答案 2 :(得分:4)
在SQL中:
select * from table_name where column_name not like '%something%';
在Hive中:
select * from table_name where not (column_name like '%something%');
答案 3 :(得分:3)
如果还没有,请查看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'这可能不是最佳REGEX,而是要查看而不是子查询
答案 4 :(得分:1)
使用regexp_extract也可以:
select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
答案 5 :(得分:0)
实际上,你可以这样做:
select * from table_name where not column_name like 'root~%';
答案 6 :(得分:0)
在黑斑羚中,您可以使用!=
而不是:
columnname != value
答案 7 :(得分:0)
作为@Sanjiv answered
hive 支持 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)