Замена символов в столбце 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?) Функцию.
Кстати: вы можете проверить разрешение функции, выполнив "значения (текущий путь)"