Замена символов в столбце CLOB (db2)

У меня есть CLOB(2000000) поле в базе данных db2 (v10), и я хотел бы запустить простой UPDATE запрос на него, чтобы заменить каждое вхождение от "foo" до "baaz".

Поскольку содержимое поля больше 32 КБ, я получаю следующую ошибку:

"{some char data from field}" is too long.. SQLCODE=-433, SQLSTATE=22001

Как я могу заменить значения?

ОБНОВЛЕНИЕ: запрос был следующим (изменил ОБНОВЛЕНИЕ в SELECT для упрощения тестирования):

SELECT REPLACE(my_clob_column, 'foo', 'baaz') FROM my_table WHERE id = 10726

ОБНОВЛЕНИЕ 2 Как указывал Мустаччо, REPLACE не работает на CLOB поля (или, по крайней мере, не делая приведение к VARCHAR на введенных данных - что в моем случае невозможно, так как размер данных превышает 32 КБ) - вопрос заключается в поиске альтернативного способа достижения REPLACE функциональность для CLOB поля.

Спасибо Криси

2 ответа

Наконец, поскольку я не нашел пути к этому с помощью SQL-запроса, я закончил тем, что экспортировал таблицу, отредактировал ее содержимое в Notepad++ и снова импортировал таблицу.

Не уверен, применимо ли это к вашему случаю: DB2 предлагает две разные функции REPLACE, SYSIBM.REPLACE и SYSFUN.REPLACE. Версия REPLACE в SYSFUN принимает CLOB и поддерживает значения до 1 МБ. В случае, если ваши значения длиннее, чем вам нужно написать свою (основанную на SQL?) Функцию.

Кстати: вы можете проверить разрешение функции, выполнив "значения (текущий путь)"

Другие вопросы по тегам