TSQL int / int溢出

时间:2019-01-24 02:38:23

标签: tsql sql-server-2008-r2 type-conversion number-formatting

我有一个名为Odo的列,其中包含行程中的米数。我通常将其除以1000以显示Km的数量。

相关代码行:

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行[Batch Start Line 2]
  varchar类型的算术溢出错误,值= 931.785156。

该数字显然比我的varchar长。如何除法,截断到小数点后1位然后转换?

编辑:SQL Server 2008 R2,因此format()不可用

1 个答案:

答案 0 :(得分:1)

您可以使用format

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)))