PRECISION в Oracle SQL — как задавать точность чисел

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

В Oracle SQL PRECISION (точность) — это часть определения числового типа NUMBER, которая отвечает за общее количество цифр, которое может содержать значение. Эта настройка важна для хранения финансовых данных, расчётов и контроля за точностью чисел.

Также термин precision может использоваться в контексте представлений данных (USER_TAB_COLUMNS), где отображается точность столбца.


🔤 Написание

sql
NUMBER(precision, scale)
  • precision — сколько всего цифр можно хранить

  • scale — сколько из них после запятой

Пример:

sql
salary NUMBER(6,2) -- максимум 9999.99

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

  • Объявление числовых столбцов в таблицах

  • Контроль допустимого диапазона значений

  • Хранение финансовой информации

  • Оптимизация занимаемого объема данных

  • Проверка через USER_TAB_COLUMNS


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

1️⃣ Определение точного денежного формата

sql
CREATE TABLE payments (
amount NUMBER(10, 2)
);

2️⃣ Число без десятичной части

sql
CREATE TABLE inventory (
quantity NUMBER(5, 0)
);

3️⃣ Полное число с нулевой точностью

sql
CREATE TABLE logs (
log_id NUMBER(12)
);

4️⃣ Проверка через представление колонок

sql
SELECT column_name, data_type, data_precision, data_scale
FROM user_tab_columns
WHERE table_name = 'PAYMENTS';

5️⃣ Указание precision в переменной

plsql
DECLARE
v_total NUMBER(7, 2);
BEGIN
v_total := 12345.67;
END;

6️⃣ Округление к заданной точности

sql
SELECT ROUND(123.4567, 2) AS округлённое
FROM dual;

7️⃣ Автоматическое округление при превышении scale

sql
INSERT INTO payments (amount) VALUES (123.4567);
-- В колонку NUMBER(6,2) вставится 123.46

8️⃣ Ошибка при превышении precision

sql
INSERT INTO payments (amount) VALUES (123456.78);
-- Ошибка: превышение допустимого диапазона для NUMBER(6,2)

9️⃣ Отображение scale и precision из словаря

sql
SELECT table_name, column_name, data_precision, data_scale
FROM all_tab_columns
WHERE owner = 'HR';

🔟 Сравнение разных значений scale

sql
CREATE TABLE test_values (
a NUMBER(5,0),
b NUMBER(5,2)
);

🧩 Заключение

PRECISION помогает контролировать точность числовых данных в Oracle SQL. Это особенно важно при работе с финансами, логикой округления и проверкой диапазонов.

💡 Запомни:

  • precision = общее количество цифр

  • scale = сколько цифр после запятой

  • Учитывай ограничения при вставке значений

  • Используй для оптимизации хранения и точности


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

PIVOT в Oracle SQL — как превращать строки в столбцы для аналитики


 

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