Переполнение TSQL int / int - PullRequest
0 голосов
/ 24 января 2019

У меня есть столбец с именем Odo, который содержит количество метров в поездке.Обычно я делю это на 1000, чтобы отобразить количество км.

Строка рассматриваемого кода:

convert(varchar(10), startPos.Distance / 1000)

вызывает следующую ошибку

Сообщение 8115, уровень 16, состояние 8, процедура sp_report_select_trip_start_and_stop, строка 7 [Строка пакетного запуска 2]
Ошибка арифметического переполнения при преобразовании числового значения в числовой тип данных.

Сообщение 232, уровень 16, состояние 2, процедура sp_report_select_trip_start_and_stop, строка 9 [Строка пакетного запуска 2]
Ошибка арифметического переполнениядля типа varchar значение = 931,785156.

Это число явно больше моего varchar.Как разделить, усечь до 1 десятичного знака и затем преобразовать?

Редактировать: SQL Server 2008 R2, поэтому format() недоступно

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать формат

format(startPos.Distance/1000,  '#,###,###.#')

или

convert(varchar(10),cast(startPos.Distance/1000 as decimal(9,1)))

Вы также можете ввести round() в них.например,

format(round(startPos.Distance/1000,1),  '#,###,###.#')

или

convert(varchar(10),cast(round(startPos.Distance/1000,1) as decimal(9,1)))
...