比如:A1 A2
001 aaaliao
002 bbbliaow
003 cccccc
执行后数据为
A1 A2
001 aaaW
002 bbbWw
003 cccccc其中A2中含有liao的记录用W代替数据表有50w数据,怎样写才能使效率最高。谢谢!
001 aaaliao
002 bbbliaow
003 cccccc
执行后数据为
A1 A2
001 aaaW
002 bbbWw
003 cccccc其中A2中含有liao的记录用W代替数据表有50w数据,怎样写才能使效率最高。谢谢!
update table set A2 = replace(A2,'liao','W');
没有只Update一部分的函数,只能全部Update但是为了高效,可以根据你的业务逻辑,添加适当的where条件。来减少要Update的栏位。
可以提高你的执行速度
table name : abc
字段 A1 A2
001 aaaliao
002 bbbliaoW
003 cccccc1。先搜索到你想要更新的那一部分數據 select
case when length(A2)>=instr(A2,'liao')+3 --判斷在 liao 後面還有字符
then substr(A2,1,instr(A2,'liao')-1)||'W'||substr(A2,8,length(A2)-instr(A2,'liao')+3)
end A3 (這裡的 A3是我隨便起的名字了)
from abc (我隨便起的表名字)
where instr(A2,'liao')!=0 (這個條件用來限制,只查詢有‘liao'的部分)
用上面的數據得到的結果是字段 A1 A2
001 aaaliao
002 bbbliaoW使用 UPDATE 語句: update abc set A2 = substr(A2,1,instr(A2,'liao')-1)||'W'||substr(A2,8,length(A2)-instr(A2,'liao')+3)
where instr(A2,'liao')!=0
注意 where 條件是保證字段裏有 ’liao‘這幾個字符
更新結果
字段 A1 A2
001 aaaW
002 bbbWW
不帶where 用時 30.641秒 但是會出現更新錯誤的情況,例如將 cccccc 更新為了W
帶where 用時29.541
用水花的方法,更新116321筆數據用時29.485 [不帶where條件用時,奇怪的是這個函數會詢問是否要更新所有?]
如果帶了where條件用時30.438秒
今天老大病假沒來,我還真閒啊 - -!!