Вопрос для начинающих (Oracle SQL) - ошибка с Varchar и SUM - PullRequest
0 голосов
/ 22 февраля 2019

В настоящее время я использую Oracle SQL Developer для изучения PL / SQL в университете.Я столкнулся с проблемой, когда мне пришлось импортировать файл .csv в таблицу и суммировать все элементы столбца с именем TIME (состоящие из минут, секунд и миллисекунд).

Однако столбецсостоит из VARCHAR и имеет следующий формат:

TIME
01:00.250
02:37.408
01:29.803
...

Я получаю сообщение об ошибке, в основном из-за того, что в столбце есть нечисловые символы (":" и ".") и, следовательно,сумма не может быть сделано.Я проверил другие темы и увидел, что люди говорят, что используют TO_CHAR, TO_DATE, но ни одно из решений, похоже, не работает.

Есть ли лучший / легкий подход к этой проблеме?

Любая помощь будет признательна,:)

1 Ответ

0 голосов
/ 22 февраля 2019

В Oracle нет типа данных time.Итак, если вы хотите суммировать их, самый простой способ - преобразовать значения в секунды:

select sum( to_number(substr(time, 1, 2)) * 60 +
            to_number(substr(time, 4)) 
          ) as seconds

Чтобы преобразовать значение обратно в строковое представление числа:

select floor(seconds / 60) || ':' || (case when seconds < 10 then '0' || mod(seconds, 60) else '' || mod(seconds, 60) end) as mmss
from (select (sum( to_number(substr(time, 1, 2)) * 60 +
              to_number(substr(time, 4)) 
             ) as seconds
      . . .
     ) s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...