Oracle 11g - SQL替换垃圾值

时间:2014-07-19 20:00:14

标签: sql regex string oracle replace

我很难做一些应该非常简单的事情。 我有一些列有这样的数据: 1,2,3,4,5,6

这个数字需要更改为描述,所以我在更新中使用嵌套替换函数:

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)。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是,这是一个分隔符问题。因此,10被替换为10。最简单的解决方法是按顺序排列。首先输入最大的数字,然后选择最小的数字:

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

另一个问题可能是描述中包含数字。如果是这种情况,我建议您修改说明。