with tmp as( select row_number() over() as rownum,id idd from bas_cm_verification_strategy)
update bas_cm_verification_strategy
set code = COALESCE(to_char(create_time, 'yyyyMMdd')) || lpad(CAST(tmp.rownum as VARCHAR), 3, '0')
from tmp where id = tmp.idd;
需求說明:
接到一個需求:給表bas_cm_verification_strategy新增一個code字段,表中歷史數據要根據創建時間+001遞增來設置code的值。
註釋:
其中 row_number() over() 獲取到的是數據的行號,此處爲了省事沒有用序列。
lpad(string text, length int [, fill text]) 通過填充字符 fill (缺省時爲空白), 把 string 填充爲長度 length。 如果 string 已經比 length 長則將其截斷(在右邊)。類似的還有rpad,不過填充的位置相反。
COALESCE(to_char(create_time, 'yyyyMMdd')) 格式化時間
CAST(tmp.rownum as VARCHAR) 轉換格式爲字符串