当前位置: 代码迷 >> Oracle管理 >> 求依据订单长度,更新字段值的sql
  详细解决方案

求依据订单长度,更新字段值的sql

热度:0   发布时间:2016-04-24 04:42:34.0
求根据订单长度,更新字段值的sql
需求是
更新RECHARGE_NOTE,判断字段flow_code的长度
如果是20位,纯数字,修改pay_kind=2(盛付通)
如果是16位,纯数字,修改pay_kind=1(国付宝)
如果是16位,有字母,修改pay_kind=0(易宝)

------解决方案--------------------
改进了下:

  update RECHARGE_NOTE t
     set t.pay_kind = case
                        when length(t.flow_code) = 20 and
                             REGEXP_LIKE(t.flow_code, '\d{20}') then
                         2
                        when length(t.flow_code) = 16 and
                             REGEXP_LIKE(t.flow_code, '\d{16}') then
                         1
                        when length(t.flow_code) = 16 and
                             REGEXP_LIKE(t.flow_code, '[[:alpha:]]+') then
                         0
                        else
                         t.pay_kind
                      end;
  相关解决方案