VARCHAR2 в Oracle SQL работает со строками разной длины

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

Тип данных VARCHAR2 в Oracle SQL используется для хранения строк переменной длины. Он позволяет сохранять текст от одного до 32 767 байт (в зависимости от режима), при этом экономит место по сравнению с CHAR. В этой статье ты найдёшь 50 примеров использования VARCHAR2 в таблицах, выражениях, функциях и PL/SQL.


🖋️ Синтаксис объявления VARCHAR2

-- В таблице:
CREATE TABLE users (
  username VARCHAR2(50),
  email VARCHAR2(100)
);

-- В PL/SQL:
DECLARE
  v_text VARCHAR2(200);
BEGIN
  v_text := 'Пример';
END;

Параметры:

  • VARCHAR2(n) — где n в байтах или символах (BYTE | CHAR)
  • Максимум: 4000 байт в SQL, 32767 байт в PL/SQL

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

  • Столбцы таблиц с текстом
  • Параметры процедур и функций
  • Переменные в PL/SQL
  • Представления, логи, JSON
  • Форматирование и проверка ввода

📊 Примеры использования VARCHAR2 в Oracle SQL (45 примеров)

  1. Объявление поля в таблице:
CREATE TABLE books (
  title VARCHAR2(200)
);
  1. Использование в SELECT:
SELECT title FROM books WHERE title LIKE 'SQL%';
  1. Присваивание в PL/SQL:
DECLARE
  v_name VARCHAR2(50);
BEGIN
  v_name := 'Oracle';
END;
  1. Ограничение длины поля:
CREATE TABLE people (
  phone VARCHAR2(15)
);
  1. Сравнение строк:
SELECT * FROM users WHERE username = 'admin';
  1. Создание таблицы с несколькими VARCHAR2:
CREATE TABLE clients (
  name VARCHAR2(100),
  email VARCHAR2(150),
  city VARCHAR2(80)
);
  1. Использование VARCHAR2 с ограничением NOT NULL:
CREATE TABLE sessions (
  session_id VARCHAR2(50) NOT NULL
);
  1. INSERT строки в VARCHAR2 поле:
INSERT INTO books (title) VALUES ('Oracle SQL Guide');
  1. Условие LIKE с VARCHAR2:
SELECT * FROM clients WHERE name LIKE 'A%';
  1. Проверка длины строки:
SELECT name FROM clients WHERE LENGTH(name) > 10;
  1. Сравнение с UPPER:
SELECT * FROM users WHERE UPPER(username) = 'ADMIN';
  1. Использование INSTR:
SELECT * FROM users WHERE INSTR(email, '@') > 0;
  1. CONCAT с VARCHAR2:
SELECT first_name || ' ' || last_name AS full_name FROM employees;
  1. Использование REGEXP_LIKE:
SELECT * FROM emails WHERE REGEXP_LIKE(address, '^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$');
  1. Присваивание значения через SELECT INTO:
DECLARE v_title VARCHAR2(200);
BEGIN
  SELECT title INTO v_title FROM books WHERE book_id = 1;
END;
  1. Преобразование в верхний регистр:
SELECT UPPER(title) FROM books;
  1. Преобразование в нижний регистр:
SELECT LOWER(title) FROM books;
  1. Использование TRIM:
SELECT TRIM('   SQL   ') FROM dual;
  1. Использование INITCAP:
SELECT INITCAP('oracle database') FROM dual;
  1. Вставка строки с кавычками:
INSERT INTO notes (text) VALUES ('Это "цитата" в тексте');
  1. Обработка NULL значений:
SELECT NVL(middle_name, '—') FROM employees;
  1. Использование CASE с VARCHAR2:
SELECT name,
  CASE status
    WHEN 'A' THEN 'Активен'
    WHEN 'I' THEN 'Неактивен'
    ELSE 'Неизвестно'
  END AS статус
FROM clients;
  1. Объединение строк через LISTAGG:
SELECT LISTAGG(name, ', ') WITHIN GROUP (ORDER BY name) AS all_names FROM clients;
  1. VARCHAR2 в функциях:
CREATE FUNCTION get_city RETURN VARCHAR2 IS
BEGIN
  RETURN 'Moscow';
END;
  1. VARCHAR2 как параметр процедуры:
CREATE PROCEDURE greet_user(p_name VARCHAR2) IS
BEGIN
  DBMS_OUTPUT.PUT_LINE('Привет, ' || p_name);
END;
  1. Использование VARCHAR2 в CTE:
WITH cities AS (
  SELECT 'London' AS city FROM dual
)
SELECT * FROM cities;
  1. Хранение JSON как строка:
CREATE TABLE settings (
  key VARCHAR2(50),
  value VARCHAR2(4000)
);
  1. VARCHAR2 с DEFAULT:
CREATE TABLE orders (
  status VARCHAR2(20) DEFAULT 'NEW'
);
  1. Подсчёт количества символов:
SELECT LENGTH(email) FROM users;
  1. Проверка пустых строк:
SELECT * FROM notes WHERE TRIM(text) IS NULL;
  1. Использование LPAD:
SELECT LPAD(id, 5, '0') FROM orders;
  1. Использование RPAD:
SELECT RPAD(name, 10, '.') FROM clients;
  1. Проверка окончания строки:
SELECT * FROM files WHERE filename LIKE '%.pdf';
  1. Работа с SUBSTR:
SELECT SUBSTR(title, 1, 10) FROM books;
  1. Условие LIKE с ESCAPE:
SELECT * FROM logs WHERE message LIKE '100\%%' ESCAPE '\';
  1. Сравнение строк с COLLATE:
SELECT * FROM users WHERE username COLLATE BINARY_CI = 'admin';
  1. Сортировка по строковому полю:
SELECT * FROM clients ORDER BY name;
  1. VARCHAR2 с индексом:
CREATE INDEX idx_username ON users (username);
  1. Хранимая функция с RETURN VARCHAR2:
CREATE FUNCTION get_status RETURN VARCHAR2 IS
BEGIN
  RETURN 'OK';
END;
  1. VARCHAR2 в аналитике:
SELECT name, ROW_NUMBER() OVER (ORDER BY name) FROM clients;
  1. Проверка значений через IN:
SELECT * FROM users WHERE role IN ('admin', 'user');
  1. Преобразование числа в строку:
SELECT TO_CHAR(12345) FROM dual;
  1. SELECT с JSON_OBJECT:
SELECT JSON_OBJECT('name' VALUE name) FROM clients;
  1. INSERT с UPPER:
INSERT INTO users (username) VALUES (UPPER('ivan'));
  1. SELECT с REGEXP_REPLACE:
SELECT REGEXP_REPLACE('abc123', '\d', '') FROM dual;

📆 Заключение: как правильно использовать VARCHAR 2 в Oracle SQL

Тип VARCHAR2 — это универсальный способ хранить строки разной длины в Oracle. Он подходит для почти всех текстовых операций — от email до описаний. Правильный выбор длины, CHAR/BYTE и грамотное использование с функциями позволяет эффективно управлять текстом в базе.


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

COALESCE в Oracle SQL — первое не NULL значение


 

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