RAW в Oracle SQL — как хранить и передавать двоичные данные

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

Тип данных RAW в Oracle SQL используется для хранения неинтерпретированных двоичных данных, таких как зашифрованные значения, хэши, UUID и другие бинарные блоки. В отличие от VARCHAR2 и CHAR, RAW сохраняет точное содержимое байтов без преобразований и интерпретации.

Это особенно полезно при работе с безопасностью, шифрованием и межсистемными интеграциями.


🔤 Написание

sql
<имя_столбца> RAW(n)
  • n — максимальная длина в байтах (до 2000 байт)

Также существует LONG RAW для хранения до 2 ГБ данных (устаревающий тип).


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

  • Сохранение хэшей (MD5, SHA)

  • Шифрованные данные

  • UUID и GUID

  • Бинарные файлы (ограниченно)

  • Защита от автоматических преобразований


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

1️⃣ Создание таблицы с RAW-полем

sql
CREATE TABLE secure_data (
id NUMBER,
hash RAW(32)
);

2️⃣ Вставка данных с функцией HEXTORAW

sql
INSERT INTO secure_data (id, hash)
VALUES (1, HEXTORAW('A1B2C3D4E5F6'));

3️⃣ Чтение RAW в виде HEX

sql
SELECT id, RAWTOHEX(hash) AS хеш
FROM secure_data;

4️⃣ Создание UUID в виде RAW

sql
SELECT SYS_GUID() AS guid FROM dual;

SYS_GUID() возвращает 16-байтовый RAW


5️⃣ Сравнение RAW значений

sql
SELECT * FROM secure_data
WHERE hash = HEXTORAW('A1B2C3D4E5F6');

6️⃣ RAW в PL/SQL переменных

plsql
DECLARE
v_raw RAW(16);
BEGIN
v_raw := HEXTORAW('ABCD1234EF');
END;

7️⃣ Использование RAWTOHEX для вывода

sql
SELECT RAWTOHEX(SYS_GUID()) AS guid_hex
FROM dual;

8️⃣ Работа с LONG RAW (устаревший подход)

sql
CREATE TABLE images (
img_id NUMBER,
content LONG RAW
);

9️⃣ RAW как ключ (например, хешированный логин)

sql
SELECT * FROM users
WHERE login_hash = HEXTORAW('DDEEFFAABB001122');

🔟 RAW в хранимой процедуре

plsql
CREATE OR REPLACE PROCEDURE insert_hash(p_id NUMBER, p_hash RAW) IS
BEGIN
INSERT INTO secure_data(id, hash) VALUES(p_id, p_hash);
END;

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

Тип RAW в Oracle SQL — это надёжный способ хранения и передачи бинарных данных, особенно когда важна точность и безопасность. Он широко используется в интеграциях, криптографии и системах идентификации.

💡 Запомни:

  • RAW(n) — до 2000 байт, LONG RAW — до 2 ГБ

  • Используй HEXTORAW для вставки, RAWTOHEX для вывода

  • Хорошо подходит для UUID, хэшей и шифрования

  • Не участвует в перекодировке символов — работает как «байт в байт»


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

PRECISION в Oracle SQL — как задавать точность числовых значений и почему это важно


 

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