更改PL SQL查询中的前两个字符

时间:2019-05-14 02:44:00

标签: sql oracle plsql

我有一个PL SQL查询来显示时间,数据类型为字符串。该字段是根据字符串值创建的。在某些情况下可以替换SELECT语句中的前两个字符吗?例如,当查询结果为24:33:07 (HH:MM:SS)时,“ 24”更改为“ 00”,因此它变为00:33:07

1 个答案:

答案 0 :(得分:0)

使用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更改为00AA更改为12

然后您可以使用以下方法验证所有时间是否都可以:

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

如果仍然存在问题,则会出现诸如ORA-01850、01851、01858之类的错误。您可以在PLSQL循环或使用正则表达式中找到错误的值。