sunil mali Ответов: 2

Функция Sql round не работает должным образом


Всем Привет,

Я работаю над преобразованием макросов MS Access в sql,
Во время обращения я столкнулся с одной серьезной проблемой.

Хотя ms access и sql являются продуктами Microsoft, преобразование чисел работает по-разному.
Экс.
в MS Access
546.5 =546
546.6=547
546.4=546

Будь то в SQL
546.5 =547
546.6=547
546.4=546

Я хочу округлить функцию, как это работает в MS Access
546.5 =546
546.6=547
546.4=546

Что я уже пробовал:

выберите cast(round(2764.6,0) as int)

2 Ответов

Рейтинг:
6

Maciej Los

Взгляните на документацию MS Access:

Цитата:

приложение Microsoft Access Round функция возвращает число, округленное до заданного числа десятичных знаков. Тем не менее, Round функция ведет себя немного своеобразно и использует то, что обычно называют банкирским округлением. Поэтому перед использованием этой функции, пожалуйста, прочтите следующее:

То Round функция использует логику округления до четности. Если выражение, которое вы округляете, заканчивается на 5, то Round функция округлит выражение так, чтобы последняя цифра была четным числом.


Вывод: вы должны создать пользовательскую функцию, которая будет вести себя так, как вы ожидали

Источник:
MS Access: круглая функция[^]
Раунд (Transact-SQL) | Microsoft Docs[^]


sunil mali

Большое вам спасибо, сэр..

Maciej Los

Всегда пожалуйста.

Рейтинг:
17

Member 7870345

Если ваши числа имеют только одну десятичную позицию (то есть нет таких чисел, как 546.51 или 546.49), вы можете использовать:

select cast(round(x-0.01,0) as int


sunil mali

Точный выход в соответствии с моими ожиданиями :) 5/5
Огромное спасибо..