我有一个名为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()
不可用
答案 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)))