Извлечение только чисел из строкового поля в Hive - PullRequest
1 голос
/ 29 марта 2019

У меня супер простая проблема в Hive.Я написал приведенную ниже выдержку, которая должна возвращать '10' из строки.Он работает, когда я тестирую его на regexr, но в Hive он просто возвращает пустое поле.

Кто-нибудь знает, что я делаю неправильно?

select REGEXP_EXTRACT('DOM_10GB_mth','/[0-9]*/g', 0)  

1 Ответ

1 голос
/ 29 марта 2019

Функция REGEXP_EXTRACT ожидает регулярное выражение pattern в качестве второго аргумента. / символы в онлайн-тестерах регулярных выражений обозначают разделители регулярных выражений , которые не являются частью шаблонов регулярных выражений . Часть g является регулярным выражением flag (для сопоставления нескольких вхождений шаблона в строке), и она также не является частью шаблона. Вам следует только передать строковый шаблон в функцию регулярного выражения Hive.

Кроме того, чтобы извлечь одну или несколько цифр, вы можете использовать [0-9]+ вместо [0-9]*, поскольку * соответствует только 0 или более вхождениям.

Используйте

select REGEXP_EXTRACT('DOM_10GB_mth','[0-9]+', 0) 

См. это демо регулярных выражений .

Обратите внимание, что в regexr или любом другом онлайн-тестере регулярных выражений шаблон /[0-9]*/g не будет работать либо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...