比如:A1     A2
001    aaaliao
002    bbbliaow
003    cccccc
执行后数据为
A1     A2
001    aaaW
002    bbbWw
003    cccccc其中A2中含有liao的记录用W代替数据表有50w数据,怎样写才能使效率最高。谢谢!

解决方案 »

  1.   

    用replace函数
    update table set A2 = replace(A2,'liao','W');
      

  2.   

    只能采用update table set A2 = replace(A2,'liao','W')的方式
    没有只Update一部分的函数,只能全部Update但是为了高效,可以根据你的业务逻辑,添加适当的where条件。来减少要Update的栏位。
    可以提高你的执行速度
      

  3.   

    可以自己來寫咯。用substr & instr 這兩個函數應該可以滿足你的需求了吧
      

  4.   

    寫出來了你可以試試
    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
      

  5.   

    發現自己的方法 好笨outwindows(水花) ( ) 信誉:100    的方法很好啊用我的方法,更新116321筆數據(我實在懶得塞數據了,跑了N久才塞進去的)
    不帶where 用時 30.641秒  但是會出現更新錯誤的情況,例如將 cccccc 更新為了W
    帶where  用時29.541
    用水花的方法,更新116321筆數據用時29.485 [不帶where條件用時,奇怪的是這個函數會詢問是否要更新所有?]
    如果帶了where條件用時30.438秒
    今天老大病假沒來,我還真閒啊 - -!!