Встроенная функция запроса ВЫРАЗИТЬ() используется не только для приведения, но и для округления чисел.
Быстрый переход
Для этого используется такой синтаксис:
ВЫРАЗИТЬ(<ОбрабатываемоеЧисло> КАК ЧИСЛО (<ДлинаЦелойЧасти>.<ДлинаДробнойЧасти>))
Общие особенности использования в запросе
Если в качестве параметра передано не числовое значение, это может не вызывать ошибки выполнения запроса, но значение корректно не обработается:
Например, если передан NULL или он сформировался при соединениях таблиц, значение на выходе останется NULL:
Передача же «Неопределено» вызывает ошибку «Несовместимые типы ВЫРАЗИТЬ»:
- Ссылочные типы или значения БУЛЕВО вызывают такую же ошибку (ИСТИНА не приводится к 1, а ЛОЖЬ к 0).
- ВЫРАЗИТЬ строку как число также нельзя, используя эту функцию.
Поэтому следует обрабатывать/проверять значение до его передачи в качестве параметра функции.
Обработка значения производится по методам округления (0.5 округляется до 1.0), поэтому, если требуется получить целое значение, то следует перед округлением вычесть 0.5 (половину цены шага)
Для округления до десятых в меньшую сторону вычесть 0.5, до сотых 0.05.
Демонстрация использования ВЫРАЗИТЬ в запросе для округления
1.56 КАК ЧислоПример,
ВЫРАЗИТЬ(1.56 КАК ЧИСЛО(15, 0)) КАК ДоЦелого,
ВЫРАЗИТЬ(1.56 — 0.5 КАК ЧИСЛО(15, 0)) КАК ДоЦелогоВниз,
ВЫРАЗИТЬ(1.56 КАК ЧИСЛО(15, 1)) КАК ДоДесятых,
ВЫРАЗИТЬ(1.56 — 0.05 КАК ЧИСЛО(15, 1)) КАК ДоДесятыхВниз,
ВЫРАЗИТЬ(1.56 КАК ЧИСЛО(15, 2)) КАК ДоСотых
Можно дурачить всех все время, — при условии, что реклама ведется правильно, а расходы на нее достаточно велики.