您好,登錄后才能下訂單哦!
前兩天領導突然給了我一個excel文件(該文件的編碼只是簡單的一個編碼,如‘C001’,而不是像A表中存在的是一個sql語句),里面有rule_code對應的代碼,領導要求我將表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) ;
當時我也嘗試了,但是A表中有上千萬的數據,自然where條件不單單是'出險人保單身份類型代碼'這一個條件,我對where條件存在的代碼去重還有一千多條結果,這就意味著我要跑replace上述的sql一千多遍,我就會瘋掉的。后來我嘗試了將excel里的編碼插入到表A,列名為r_code,將A表中where條件單獨取出作為一列r_cow,這樣就可以僅用一句sql語句就能實現上千條的不同條件的批量替換字符串中的某個字符了,
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);
成功完成,不用加班咯!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。