powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при вычислении поля во вьюшке
4 сообщений из 4, страница 1 из 1
Ошибка при вычислении поля во вьюшке
    #32018819
SergeK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSSQL 7.0, SP2
Есть вьюшка, которая возвращается в том числе и поле следующей конструкции:

..., summa / qty as summa_r, ...

где summa - money, qty - decimal(14,2).

В MS Access версии 7.0 (в данном случае MSAccess - прокладка между сиквелом и интерфейсом) это поле линкуется как текстовое. В Query Analyser'е вижу это поле как поле с кучей нулей после запятой. Ставил round(summa / qty, 2) - то же самое.
После того, как принудительно сделал convert(money, round(summa / qty, 2)) - всё честно увиделось как надо -
в Access'е как money, в Query Analyser'е как число с четырьмя нулями после запятой.

Просвятите, пожалуйста, что происходит с типом данных в этом выражении. Что получается? Не текст же? Искал в BOL что-нибудь по этому поводу - не нашел, может быть плохо искал?
...
Рейтинг: 0 / 0
Ошибка при вычислении поля во вьюшке
    #32018828
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DECLARE @A money, @B decimal(14,2)
Set @a=10
Set @b=2

Select @a/@b As A into tmp

execute sp_help tmp

drop table tmp

Получаем:
Column_name Type ... Length Prec Scale Nullable ...
------------- ----------- ... ----------- ----- ----- -----------...
A decimal ... 17 36 19 yes ...

То есть decimal(36,19). В общем случае при таких операциях результат приводится к типу, который обеспечит отсутствие (или минимизацию) потери точности при округлении. Поскольку в Вашем View вы получаете цену (деля сумму на количество), то приведение результата к типу money IMHO правильное решение.
...
Рейтинг: 0 / 0
Ошибка при вычислении поля во вьюшке
    #32018829
SergeK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Единственное в отношении этой проблемы не понятно, почему же данные не были поняты клиентом как плавающая точка?
...
Рейтинг: 0 / 0
Ошибка при вычислении поля во вьюшке
    #32018867
Фотография Александр Степанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что с одной стороны, Access-у не хватало precision у типа decimal, а, с другой стороны, засунув это поле в плавающую точку, он рисковал его исказить (потерять точность). Вот поэтому он его и мэпил как текст.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка при вычислении поля во вьюшке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]