26

Hive は肯定的な like クエリをサポートしていますが、例:

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

Hiveは否定的な like クエリをサポートしていません: ex.

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

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

4

8 に答える 8

54

これを試して:

Where Not (Col_Name like '%whatever%')

rlike でも動作します:

Where Not (Col_Name rlike '.*whatever.*')
于 2011-04-14T20:56:48.827 に答える
6

SQL では:

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

ハイブ:

select * from table_name where not (column_name like '%something%');
于 2014-06-19T08:41:00.583 に答える
3

まだの場合は、https://cwiki.apache.org/confluence/display/Hive/LanguageManualを確認してください。ハイブのクエリを書いているときはいつもそれを参照しています。

単語の一部を一致させようとしているところは何もしていませんが、チェックアウトすることをお勧めしますRLIKE(このセクションではhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#Relational_Operators

これはおそらくちょっとしたハックジョブですが、正の値と一致するかどうかを確認してCASEhttp://wiki.apache.org/hadoop/Hive/LanguageManual/UDF#Conditional_Functions)を実行するサブクエリを実行できます。メインクエリの既知の値を使用して、一致するかどうかを確認します。

別のオプションは、チェックを行うUDFを作成することです。

家に座ってHiveにアクセスできない状態でブレインストーミングをしているだけなので、明らかな何かが欠けている可能性があります。:)

それが何らかの形で役立つことを願っています。\ ^ _ ^ /

編集:以下の私のコメントから追加のメソッドを追加します。

提供された例の場合colNameRLIKE'[^r] [^ o] [^ o] [^ t]〜\ w'これは最適な正規表現ではないかもしれませんが、サブクエリの代わりに調べる必要があります

于 2011-04-12T00:31:34.130 に答える
1

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

select * from table_name where regexp_extract(my_column, ('myword'), 0) = ''
于 2015-07-08T15:00:27.057 に答える
0

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

select * from table_name where not column_name like 'root~%';
于 2013-04-24T11:43:16.073 に答える