Проблема с получением только чисел из строки и суммированием всех строк

#sql

Вопрос:

У меня есть запрос, который получает числа из строк. Пример строки: 1TP 2 TP. Запрос на получение данных 1,2 из этой строки. Но суммировать числа из этой строки невозможно. Я хотел бы суммировать 1 2, но ‘,’, потому что суммировать строки невозможно. Когда я удаляю»,», тогда у меня проблема, потому что видимые данные 12 вместо 2 отдельных чисел: 1 и 2.Как разделить их, потому что со строкой 12TP это не проблема, но когда строка выглядит как 3TP 2 TP, результат запроса-1 число: 32 вместо 3 и 2. И сумма строк неверна. Большое вам спасибо за вашу поддержку

Запрос:

 select 
    root_cause,
    regexp_replace(
      regexp_replace(root_cause_details,'[^[:digit:]] ',','),
      '^,|,

Пример таблицы:
номера столбцов: извлеченные номера по запросу
ПРЕДСТАВЛЕНИЕ ТАБЛИЦЫ


Комментарии:

1. Вы должны добавить свою таблицу и примеры данных. Пометьте свою базу данных тоже.

Ответ №1:

Я не уверен, какую базу данных вы используете, но я думаю, что вам просто нужно указать, что сопоставление должно быть глобальным, а не только первым. Также вы можете использовать trim() для удаления первых элементов.

Вы не указываете базу данных, которую используете, но в Postgres это выглядит так:

 trim(',' from regexp_replace(root_cause_details,'[^0-9] ', ',', 'g'))
 

Синтаксис был бы аналогичен в любой другой базе данных, которая поддерживает regexp_replace() .

,'' Numbers
)
FROM booker.o_remedy
WHERE
item = 'EU - Writing Requests'
AND extract(week from (date(resolved_date))) = 28
AND extract(year from (date(create_date))) = 2021
AND root_cause_details ILike '%TP%'
Пример таблицы:
номера столбцов: извлеченные номера по запросу
ПРЕДСТАВЛЕНИЕ ТАБЛИЦЫ

Комментарии:

1. Вы должны добавить свою таблицу и примеры данных. Пометьте свою базу данных тоже.

Ответ №1:

Я не уверен, какую базу данных вы используете, но я думаю, что вам просто нужно указать, что сопоставление должно быть глобальным, а не только первым. Также вы можете использовать trim() для удаления первых элементов.

Вы не указываете базу данных, которую используете, но в Postgres это выглядит так:


Синтаксис был бы аналогичен в любой другой базе данных, которая поддерживает regexp_replace() .