web-dev-qa-db-ja.com

SQLの「好きではない」に相当するHiveはありますか

Hiveは肯定的なクエリのようなものをサポートしていますが:ex。

select * from table_name where column_name like 'root〜%';

ハイブしないクエリのような否定をサポート:ex。

select * from table_name where column_name 'root〜%'とは異なります;

Hiveがサポートする同等のソリューションを知っている人はいますか?

22
CMaury

https://cwiki.Apache.org/confluence/display/Hive/LanguageManual を確認してください。 Hiveのクエリを作成するときは常に参照します。

Wordの一部と一致させようとすることは何もしていませんが、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'これは最適なREGEXではないかもしれませんが、サブクエリの代わりに調べるべきものです

3
QuinnG

これを試して:

Where Not (Col_Name like '%whatever%')

rlikeでも動作します:

Where Not (Col_Name rlike '.*whatever.*')
47
HAL9000

NOT LIKEはHiveバージョン0.8.0でサポートされています。JIRAで確認してください。

https://issues.Apache.org/jira/browse/Hive-174

8
Sanjiv

SQLの場合:

select * from table_name where column_name not like '%something%';

ハイブ内:

select * from table_name where not (column_name like '%something%');
5
minhas23

Regexp_extractの使用も同様に機能します。

select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
1
Reid Minto

Impalaでは、次のように!=を使用できます。

columnname != value
0
DrSD

実際、次のように作成できます。

select * from table_name where not column_name like 'root~%';
0
zorro