您好,登錄后才能下訂單哦!
前兩天領(lǐng)導(dǎo)突然給了我一個excel文件(該文件的編碼只是簡單的一個編碼,如‘C001’,而不是像A表中存在的是一個sql語句),里面有rule_code對應(yīng)的代碼,領(lǐng)導(dǎo)要求我將表A中ori_sql列where條件的漢字限制替換為代碼,A表的主鍵是rule_code,
例如:
select from A a where a.codetype not in (select code from B b where b.codetypedesc='出險人保單身份類型代碼';
改為:
select from A a where a.codetype not in (select code from B b where b.codetypedesc='C001';
有的人覺得直接用replace替換:
update A set ori_sql = (select replace(lower(a.ori_sql),'出險人保單身份類型代碼','C001') from A) ;
當(dāng)時我也嘗試了,但是A表中有上千萬的數(shù)據(jù),自然where條件不單單是'出險人保單身份類型代碼'這一個條件,我對where條件存在的代碼去重還有一千多條結(jié)果,這就意味著我要跑replace上述的sql一千多遍,我就會瘋掉的。后來我嘗試了將excel里的編碼插入到表A,列名為r_code,將A表中where條件單獨取出作為一列r_cow,這樣就可以僅用一句sql語句就能實現(xiàn)上千條的不同條件的批量替換字符串中的某個字符了,
sql如下:
update A a set a.ori_sql = (select distinct replace(lower(a1.ori_sql),a1.r_cow,a1.r_code) from A a1 where a.ru_code=a1.row_code);
成功完成,不用加班咯!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。