我正在尝试查询的其中一个表格中有一个类型为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。
答案 0 :(得分:4)
如果您没有为varchar
指定长度,则CONVERT
操作时默认为 30个字符。
这不足以保持38位小数。因此,请在varchar
声明中提供CONVERT
适当的长度!!
试试这个:
select convert(varchar(40), 19040220000.0000000000000000000)
答案 1 :(得分:0)
您需要使用设定长度大于所需精度的varchar,即
select convert(varchar(64), 19040220000.0000000000000000000)