2016-11-28 177 views
0

我在sql中有一個需求,其中需要修改列名稱XYZ。在那一欄中,我想用PT替換27007的每一個出現。例如:如果列值是2700702,那麼新值應該是PT02。我該如何實現它?無法用新子字符串替換子字符串

+4

'取代(XYZ, '27007', 'PT')'? – jarlh

+1

您是否嘗試過更換(XYZ,'27007','PT')? –

+0

感謝這有助於。我很擔心自27007以後可以跟隨任意數量的字符。這將工作完美 –

回答

0

它您需要在表中更改值:

update t 
    set xyz = replace(xyz, '27007', 'PT') 
    where xyz like '%27007%'; 
+0

在這種情況下,可能會更好沒有WHERE條件。讓引擎搜索字符串'27007'並在發現時替換它。使用WHERE條件時,無論如何都會在每一行中搜索字符串,並且每當找到匹配項時,REPLACE函數將再次搜索它,使工作量增加。 – mathguy

+3

沒有WHERE條件,所有行都會被更新。在WHERE條件下,只有包含「27007」的行纔會更新。 – vav

+0

REPLACE替換所有匹配項。所以如果你的字符串是'27007027007',那麼它將被轉換爲'PT0PT'。如果這不是你想要的,你需要使用substr/instr或regexp_replace的組合 – vav