CHAR в Oracle SQL — как работать с символьными данными

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

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

Знание, как работает CHAR, особенно важно при:

  • Интеграции с внешними системами

  • Обмене данными в фиксированных форматах

  • Работе с кодами, индексами, метками и флагами


🔤 Написание

sql
CHAR(n)

🔹 n — количество символов (от 1 до 2000)

Пример:

sql
product_code CHAR(5)

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

  • При проектировании таблиц с фиксированными кодами

  • В колонках с бинарными флагами (Y/N, T/F, 1/0)

  • В отчётах с выравниванием по ширине

  • В случаях, где требуется точная длина поля (например, ID из 10 символов)

  • В PL/SQL переменных, типизированных как CHAR


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

1️⃣ Создание таблицы с CHAR

sql
CREATE TABLE products (
code CHAR(5),
name VARCHAR2(100)
);

Все значения в code будут занимать ровно 5 символов.


2️⃣ Вставка данных в CHAR-колонку

sql
INSERT INTO products (code, name)
VALUES ('A12', 'Гаечный ключ');

В поле code будет храниться 'A12 ' (с двумя пробелами).


3️⃣ Сравнение с ЧАР-значением

sql
SELECT * FROM products WHERE code = 'A12';

Работает корректно, потому что Oracle автоматически подравнивает пробелы при сравнении.


4️⃣ Использование TRIM при отображении

sql
SELECT TRIM(code) AS чистый_код FROM products;

Удаляет лишние пробелы в выводе.


5️⃣ PL/SQL переменная ЧАР

plsql
DECLARE
v_flag CHAR(1) := 'Y';
BEGIN
IF v_flag = 'Y' THEN
DBMS_OUTPUT.PUT_LINE('Активен');
END IF;
END;

6️⃣ CHAR vs VARCHAR2 в плане памяти

sql
CREATE TABLE demo_char (
code_char CHAR(10)
);
CREATE TABLE demo_varchar (
code_varchar VARCHAR2(10)
);

CHAR всегда использует 10 байт, даже если строка из 3 символов.


7️⃣ ЧАР в выборке с форматированием

sql
SELECT RPAD(code, 5, '.') FROM products;

Явное выравнивание помогает видеть структуру поля.


8️⃣ Сравнение ЧАР и VARCHAR2

sql
SELECT CASE
WHEN code_char = code_varchar THEN 'Совпадают'
ELSE 'Не совпадают'
END
FROM demo_char dc
JOIN demo_varchar dv ON dc.code_char = dv.code_varchar;

Может не сработать без TRIM — из-за лишних пробелов в CHAR.


9️⃣ Использование SUBSTR с ЧАР

sql
SELECT SUBSTR(code, 1, 2) FROM products;

Работает как с любой строкой.


🔟 Использование ЧАР в ограничениях

sql
CREATE TABLE settings (
active_flag CHAR(1) CHECK (active_flag IN ('Y', 'N'))
);

Ограничение на флаг Y/N, тип — CHAR.


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

CHAR — тип для тех случаев, когда важна фиксированная длина строк. Его преимущество — в предсказуемости и простоте форматирования, но будьте осторожны:

💡 Полезно помнить:

  • Oracle добавляет пробелы до нужной длины

  • Сравнения автоматически учитывают это (но могут ввести в заблуждение)

  • При частой работе с переменными длинами — лучше использовать VARCHAR2


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

CASE в Oracle SQL — как писать условные выражения


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