在SQL Server中将long decimal或float转换为varchar

时间:2012-01-13 15:47:25

标签: sql-server decimal varchar

我正在尝试查询的其中一个表格中有一个类型为decimal(38,19)的字段。我需要将其转换为varchar才能处理我的perl DBI模块。我应该如何在SQL中编写转换以使其工作?具体来说,如果我在SQL Server Management Studio中运行它:

select convert(varchar, 19040220000.0000000000000000000)

我明白了:

  

Msg 8115,Level 16,State 5,Line 1
  将数值转换为数据类型varchar的算术溢出错误。

我试图先把数字弄圆:

select convert(varchar, round(19040220000.0000000000000000000, 0))

但这似乎也不起作用(相同的错误消息)。实际上round()由于某种原因似乎没有对该数字产生影响。我该怎么办? THX。

2 个答案:

答案 0 :(得分:4)

如果您没有为varchar指定长度,则CONVERT操作时默认为 30个字符

这不足以保持38位小数。因此,请在varchar声明中提供CONVERT适当的长度!!

试试这个:

select convert(varchar(40), 19040220000.0000000000000000000)

答案 1 :(得分:0)

您需要使用设定长度大于所需精度的varchar,即

select convert(varchar(64), 19040220000.0000000000000000000)