ユーザー名のすべての 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 アドレスとして認識していることです。それを修正する方法はありますか?
などの特殊文字をエスケープするには、追加のバックスラッシュが必要です。または \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 <> "";