複数の非英数字または非数値文字を削除する方法、または文字列から数字のみを返す方法を見つけようとしています。私はもう試した:
SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name
ただし、「789」ではなく「7」を返します。
また、NOT MATCH構文^((?! regexp)。)* $を使用して、数字以外の文字を削除しようとしました。
SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii
Regexp_extractは複数の一致を返すことができますか?私が本当にやろうとしているのは、数字または英数字のみが含まれるようにデータを消去することです。これは悪い文字の削除に役立つようですが、[0-9]のような文字の範囲ではありません。 regexp_replace(string、 '�'、 '')
編集:以下のクエリは「7789」を返すことができました。これはまさに私が探していたものです。
SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name
こちらもご覧ください Hive regexp_extract weirdness
Regex_extractは、3番目のパラメーターで指定されたグループ番号のみを返すと思います。
_regex_extract
_は1行でのみ機能し、その後終了するようです。
代替品については知りません。
英数字以外のデータでも機能する可能性がありますが、このようなものをフィードした場合
REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')
また、抽出については、上記のリンクを参照してください。
regexp_extract('X789', '[0-9]+', 0)
は複数の数字を表します。
または
regexp_extract('XYZ789', '[a-zA-Z]+', 0)
複数のアルファ用。