Как получить текстовое содержимое из BLOB в Oracle SQL
Я пытаюсь увидеть из консоли SQL, что находится внутри Oracle BLOB.
Я знаю, что он содержит довольно большой текст, и я хочу просто увидеть текст, но следующий запрос указывает только на то, что в этом поле есть BLOB:
результат, который я получаю, не совсем то, что я ожидал:
Итак, какие магические заклинания я могу использовать, чтобы превратить BLOB в его текстовое представление?
PS: Я просто пытаюсь посмотреть содержимое BLOB-объекта из консоли SQL (Eclipse Data Tools), а не использовать его в коде.
Как получить размер в байтах столбца CLOB в Oracle?
как получить размер в байтах CLOB столбец в Oracle?
LENGTH() и DBMS_LOB.getLength() обе функции возвращают количество символов, используемых в CLOB но мне нужно знать, сколько байтов используется (я имею дело с многобайтовыми наборами символов).
7 ответов
после некоторого размышления я придумал это решение:
SUBSTR возвращает только первые 4000 символов (максимальный размер строки)
TO_CHAR преобразует из CLOB to VARCHAR2
LENGTHB возвращает длину в байтах, используемого строку.
Я добавляю свой комментарий в качестве ответа, потому что он решает исходную проблему для более широкого круга случаев, чем принятый ответ. Примечание: Вы все равно должны знать максимальную длину и приблизительную долю многобайтовых символов, которые будут иметь ваши данные.
Если у вас CLOB больше 4000 байт, вам нужно использовать DBMS_LOB.SUBSTR, а не SUBSTR. отметим, что в сумме и смещение параметры в обратном DBMS_LOB.Функцию substr.
затем вам может потребоваться подстрока меньше 4000, потому что этот параметр равен числу символы, и если у вас есть многобайтовые символы, то 4000 символов будет более 4000 байт долго, и вы получите ORA-06502: PL/SQL: numeric or value error: character string buffer too small потому что результат подстроки должен соответствовать VARCHAR2, который имеет ограничение в 4000 байт. Точное количество символов, которое вы можете получить, зависит от среднего количества байтов на символ в вашем данные.
поэтому мой ответ:
где вы добавляете столько кусков, сколько вам нужно, чтобы покрыть ваш самый длинный клоб, и отрегулируйте размер куска в соответствии со средними байтами на символ ваших данных.
попробуйте это для размеров CLOB больше, чем VARCHAR2:
мы должны разделить CLOB на части «совместимых с VARCHAR2» размеров, запустить lengthb через каждую часть данных CLOB и суммировать все результаты.
Cx oracle как получить строку в байтах
Основные способы обработки строковых значений в Oracle.
В этой публикации я приведу основные функции работы со строками которые встречались мне в работе, и будут полезны всем кто работает с Oracle.
CONCAT — Объединяет две строки
LOWER — Преобразует все символы в нижний регистр
UPPER — Преобразует все символы строки в верхний регистр
INITCAP — Преобразует первый символ к верхнему регистру а остальные к нижнему
TRIM — Удаляет заданный символ из строки
Синтаксис:
LTRIM — Удаляет заданные символы слева
Синтаксис:
RTRIM — Удаляет заданные символы справа
Синтаксис:
RPAD — Дополняет строку справа до указанного размера заданными символами
Синтаксис:
LPAD — Дополняет строку слева до указанного размера заданными символами
Синтаксис:
REPLACE — Заменяет некоторую последовательность символов в строке другим набором символов
Синтаксис:
TRANSLATE Заменяет символы в исходной строке — сопоставляя их с другим набором символов. (смотреть пример, там понятно.)
Синтаксис:
SUBSTR — Возвращает подстроку из строки
Синтаксис:
INSTR — Возвращает N-ное вхождение подстроки в исходной строке
Синтаксис:
LENGTH — Возвращает размер строки
VSIZE — Возвращает длину строки в байтах
ASCII — Возвращает ASCII код первого (левого) символа строки
CHR — Функция противоположная ASCII — возвращает символ из кода