2016-11-10 5 views
0

はここしかし、結果は常に空ですmytableはハイブクエリ言語RLIKEクエリ

id | mycolumn 
---|-------------------------------- 
1 | 1~2.3.1~9~333.2~3~2~33 
2 | 1~1.4.3~4~233.2~4~2~44 
3 | 1~53.0.2785.124~4~6.0.1~5~2~33 
4 | 1~3~3~3~3~6~3 

でいくつかのサンプルデータです。

Hive Query Language Manualに述べたように、

NULL AまたはBがNULLの場合、TRUE Aの任意の(おそらく空の)ストリングは、そうでなければFALSE、Javaの正規表現Bと一致した場合。たとえば、 'foobar' RLIKE 'foo'はTRUEと評価され、 'foobar' RLIKE '^ f。* r $'と評価されます。

私はJavaでRegExpをテストしましたが、正常に動作します。 \\\に置き換えて、~\~に置き換えようとしましたが、運がありませんでした。

 Pattern p = Pattern.compile("\\d~[\\d\\.]+~\\d~[\\d\\.]+~\\d~2~(33|44)"); 

を次のように

私がテストに使用されるJavaコードがある誰もがクエリで間違っているものを教えてもらえますか?ありがとう!

+0

この方法をteryことができると思います\ d'です。他の定義済みの文字をサポートしているかどうか疑問に思う – Jenson

答えて

1

私はあなたがそれは `ハイブがサポートされていないことが判明し

where mycolumn rlike '.*~[0-9].[0-9].[0-9]~[0-9]~[0-9][0-9][0-9].[0-9]~[0-9]~  [0-9]~(33|44)'; 
or mycolumn rlike '.*(33|44)'; 
it won't work as java with '\\d~...' or '\d~'