3

ユーザー名のすべての IP アドレスをフィルター処理しようとしています。しかし、これは私のクエリでは実際には正しく機能しません:

select distinct regexp_extract(username, '^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$', 0) from ips. 

問題は、彼が 1000000 という数字を IP アドレスとして認識していることです。それを修正する方法はありますか?

4

1 に答える 1

4

などの特殊文字をエスケープするには、追加のバックスラッシュが必要です。または \s. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDFの wiki にさらに詳しい情報があります。

次のようなものを試してください:

select
    distinct regexp_extract(ip, '^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$', 0) as match
from
    ips
having
    match <> "";
于 2013-08-18T04:29:56.743 に答える