基于现有值的oracle附加值

vql8enpb  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(250)

我有一列部分摘要编号。

docket_number
-------------
08DR2197
17JV1398
98JV2954
84JS249
76JV16391
66JV1616

如果卷宗编号以6、7、8或9开头,则在卷宗编号开头插入“19”。如果卷宗编号以其他任何内容开头,则在卷宗编号的开头插入“20”。结果是这样的。

docket_number
-------------
2008DR2197
2017JV1398
1998JV2954
1984JS249
1976JV16391
1966JV1616
6tr1vspr

6tr1vspr1#

尝试此选项:

UPDATE yourTable
SET docket_number = CASE WHEN REGEXP_LIKE (docket_number, '^[6-9]')
                         THEN '19' ELSE '20' END || docket_number;

我使用正则表达式方法来检查第一个数字。@littlefoot给出的选项实际上可能比这个更好,但是上面的代码要简洁一些。

7cjasjjr

7cjasjjr2#

select case when substr(docket_number, 1, 1) in ('6', '7', '8', '9') then '19'
            else '20'
       end || docket_number as docket_number
from your_table
oxf4rvwz

oxf4rvwz3#

我只会使用字符串比较:

update t
    set docket_number = (case when docket_number >= '60' and docket_number <= '99'
                              then '19' else '20'
                         end) || docket_number;

相关问题