DUMP в Oracle SQL — как просматривать внутреннее представление данных в колонках

🟢 DUMP в Oracle SQL. Введение

Иногда разработчику нужно заглянуть «под капот» — увидеть, как данные реально хранятся в таблице: в каком типе, в каком формате, с каким кодированием. Для этого в Oracle SQL есть встроенная функция DUMP.

Функция DUMP позволяет вывести:

  • тип внутреннего хранения значения

  • длину значения в байтах

  • байтовое представление (в десятичной, шестнадцатеричной и других системах)


🔤 Написание

sql
DUMP(выражение [, формат [, начало [, длина]]])
  • выражение — поле или значение

  • формат (необязательный): 8 — десятичный, 10 — символы, 16 — шестнадцатеричный

  • начало — с какого байта начинать

  • длина — сколько байт извлечь


🔄 Где используется

  • Отладка проблем с кодировкой

  • Сравнение хранения значений в разных NLS-настройках

  • Анализ строковых несостыковок (разные символы выглядят одинаково)

  • Проверка различий в пробелах, невидимых символах

  • Диагностика «невидимых» различий между строками


🧪 10 Примеров использования DUMP

1️⃣ Простой пример

sql
SELECT DUMP('A') FROM dual;

Выводит: Typ=96 Len=1: 65 (символ «A» в ASCII — 65)


2️⃣ DUMP по числу

sql
SELECT DUMP(12345) FROM dual;

3️⃣ Анализ кодировки строки

sql
SELECT DUMP('Привет') FROM dual;

Покажет, в каких байтах реально хранится строка на кириллице.


4️⃣ DUMP с указанием формата (16 = HEX)

sql
SELECT DUMP('A', 16) FROM dual;

5️⃣ DUMP с анализом пробелов

sql
SELECT DUMP('a '), DUMP('a') FROM dual;

Помогает найти отличия, когда строки визуально идентичны.


6️⃣ Вывод символов (format = 10)

sql
SELECT DUMP('Hello', 10) FROM dual;

7️⃣ DUMP части строки

sql
SELECT DUMP('abcdef', 8, 2, 3) FROM dual;

Извлекаем 3 байта начиная со второго.


8️⃣ Сравнение двух визуально одинаковых строк

sql
SELECT DUMP('а'), DUMP('a') FROM dual;

Первая — кириллическая «а», вторая — латинская.


9️⃣ Использование DUMP в WHERE для диагностики

sql
SELECT * FROM my_table
WHERE DUMP(column_name) != DUMP(TRIM(column_name));

🔟 Анализ поля из таблицы

sql
SELECT column_name, DUMP(column_name)
FROM users
WHERE ROWNUM = 1;

🧩 DUMP в Oracle SQL. Заключение

Функция DUMP в Oracle SQL — мощный диагностический инструмент, который показывает, как именно значения хранятся внутри базы данных. Особенно полезна при поиске невидимых различий, отладке кодировок и анализе символов.

💡 Запомни:

  • По умолчанию DUMP показывает тип, длину и байты (десятичные)

  • Используй разные форматы: 8, 10, 16 для других представлений

  • Отлично помогает находить различия в строках, где = не срабатывает


🔜 Следующая статья:

DISTINCT в Oracle SQL — как выбрать только уникальные строки без повторений


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии