Изменить первые два символа в PL SQL Query - PullRequest
0 голосов
/ 14 мая 2019

У меня есть PL SQL Query для отображения времени и типов данных в виде строки.Поле создается из строковых значений.Могу ли я заменить первые два символа в SELECT в некоторых условиях?Например, когда результат запроса 24:33:07 (HH:MM:SS), '24' изменяется на '00', поэтому он становится 00:33:07

1 Ответ

0 голосов
/ 14 мая 2019

Используйте case when и правильно обрабатывайте все случаи, например, как здесь:

with t(str) as (
  select '16:43:48' from dual union all
  select 'AA:17:01' from dual union all
  select '01:12:25' from dual union all
  select '24:33:07' from dual )
select str, case 
            when str like '24%' then '00'||substr(str, 3)
            when str like 'AA%' then '12'||substr(str, 3)
            else str
            end corrected
  from t

В моих примерах две строки были неправильными, и 24 был изменен на 00 и AA на 12.

Затем вы можете проверить, все ли времена в порядке, используя:

select to_date(corrected, 'hh24:mi:ss') from (...previous query...)

Если что-то все еще не так, вы получаете ошибки, такие как ORA-01850, 01851, 01858. Вы можете найтиневерные значения в цикле PLSQL или при использовании регулярных выражений.

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