Cx oracle как получить строку в байтах
Перейти к содержимому

Cx oracle как получить строку в байтах

Как получить текстовое содержимое из 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 — возвращает символ из кода

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *