2014-07-19 2 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 заменяется на 1 и 0. Самое простое исправить - это сделать вещи в правильном порядке. Сначала поместите наибольшие числа и спуститесь до наименьших чисел:

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

Другая проблема может заключаться в том, что описания содержат цифры. Если это так, я предлагаю вам изменить описания.

+0

Это именно то, что было проблемой, и я тоже выяснял это, когда писал пример. Благодаря! – user3856632

Смежные вопросы