Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Извлечение числа после запятой в SQL: функция, запросы

Быстрый ответ

Для извлечения десятичной части числа используйте следующий запрос:

SQL
Скопировать код
SELECT (YourColumn % 1) AS DecimalPart FROM YourTable;

Для значения YourColumn = 123.456 на выходе получите 0.456. Нуль перед запятой не учитывается. Чтобы преобразовать полученное значение в целое, умножьте его и выполните явное приведение типа:

SQL
Скопировать код
SELECT CAST((YourColumn % 1) * 1000 AS INT) AS DecimalDigits FROM YourTable;

Значение 123.456 преобразуется в 456. Подставьте нужное вам значение вместо 1000, чтобы получить нужное количество знаков после запятой. Рассмотрим подробнее механизм этой операции в SQL.

Кинга Идем в IT: пошаговый план для смены профессии

Способы извлечения десятичной части: многообразие подходов

PARSENAME: Разделение строки

Воспользуйтесь функцией PARSENAME для работы со строковым представлением числа:

SQL
Скопировать код
SELECT PARSENAME(CONVERT(varchar, YourColumn), 1) AS DecimalDigits FROM YourTable;

Комментарий: // Разделить строку? Проще простого!

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Обработка исключений: отрицательные числа

Используйте функцию ABS для корректной работы с отрицательными числами:

SQL
Скопировать код
SELECT ABS(YourColumn) – FLOOR(ABS(YourColumn)) AS DecimalPart FROM YourTable;

Комментарий: // Отрицательные числа – не преграда!

Высокая точность: использование SUBSTRING

В случае необходимости высокой точности преобразуйте число в varchar и примените функцию SUBSTRING:

SQL
Скопировать код
SELECT SUBSTRING(CONVERT(varchar, YourColumn), CHARINDEX('.', YourColumn) + 1, LEN(YourColumn)) AS DecimalDigits FROM YourTable;

Комментарий: // Точность превыше всего!

Визуализация

Вообразите шоколадку, с линией между целой и дробной частями:

Markdown
Скопировать код
Представьте себе шоколадку 🍫 с линией раздела:

Целые числа [🔢] | Дробные числа [🔣]

SQL-запросы, как нож, которым можно отделить дробную часть:

SQL
Скопировать код
SELECT CAST(MY_NUMBER AS INT)          -- Сохраняем целую часть [🔢]
FROM MY_TABLE;                        // Не упустите это!

SELECT MY_NUMBER – CAST(MY_NUMBER AS INT) -- Отбрасываем целую часть [🔢]
FROM MY_TABLE;                        // И получаем дробную часть [🔣].

И вуаля! У вас только дробная часть числа:

Markdown
Скопировать код
Было: [🔢|🔣] (8.76)
Стало:  [🔣] (0.76)

В точку, мы извлекли именно дробную часть! 🍫➡️🔣

Учет особенностей и исключений

Масштаб и точность: ключевые аспекты данных

Ваше решение должно учитывать масштаб и точность данных для их корректной обработки:

SQL
Скопировать код
SELECT CONVERT(DECIMAL(10,2), YourColumn % 1)
FROM YourTable;

Комментарий: // Будьте внимательны с числами!

Работа с нулями: избегаем лишних

Стартовые и конечные нули также требуют особого обращения. Убираем лишние с конца:

SQL
Скопировать код
SELECT TRIM(TRAILING '0' FROM CONVERT(VARCHAR, YourColumn % 1))
FROM YourTable;

Комментарий: // Убираем лишние нули!

Проверка и тестирование

Осуществление тестирования для разнообразных входных данных, включая отрицательные числа, обязательно для гарантии надежности вашего решения.

Детали работы с CHARINDEX и LEN

Функции CHARINDEX и LEN в SQL — ваши надежные помощники при выполнении сложных операций извлечения данных. Их использование жизненно необходимо.

Полезные материалы

  1. Функция SUBSTRING() в SQL Server – изучите разные подходы к обработке строк в SQL.
  2. Преобразование CAST и CONVERT (Transact-SQL) – SQL Server – освойте различные методы преобразования типов данных в SQL.
  3. Функция ROUND (число) – научитесь правильному округлению чисел в Oracle SQL.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой запрос выведет десятичную часть числа из столбца 'YourColumn' в таблице 'YourTable'?
1 / 5