2014-07-19 25 views
0

我在做一些應該很簡單的事情時遇到了很大的困難。 我有有這樣一些數據列: 1,2,3,4,5,6Oracle 11g - SQL替換垃圾值

這個數字需要所以我使用了一個嵌套在更新替換功能將變爲描述:

UPDATE some_table 
     SET some_column = REPLACE(REPLACE(REPLACE(REPLACE(column_name, 
      '0', ''), 
      '1', 'some_desc_1'), 
      '2', 'some_desc_2'), 
      '3', 'some_desc_3') 
     WHERE ID = some_id; 

一切都將是巨大的,但是當有更多的數字來代替(7,8,9等),事情開始變得怪異,我得到了複製的結果,一些垃圾值(如數字0某處之間)。

我在做什麼錯?

+0

該陳述看起來正確。我們需要看到一個可重複的測試用例來了解真正發生的事情。 –

回答

0

我的猜測是這是一個分隔符問題。因此,10被替換爲10。最簡單的解決方法是將事情按正確順序排列。先將最大的數字放到最小的數字上:

replace(replace(. . . replace(col, '10', 'foo'), '9', 'bar) . . .) 

另一個問題可能是說明中包含數字。如果是這樣的話,我建議你修改說明。

+0

這正是問題所在,當我寫一個例子的時候,我也明白了這個問題。謝謝! – user3856632