2012-01-13 81 views
0

我试图查询的表中有一个表格的类型为decimal(38,19)。我需要将它转换为varchar才能让我的perl DBI模块处理。我应该如何在SQL中编写转换才能使其工作?特别是,如果我在SQL Server Management Studio中运行以下命令:将长十进制或浮点数转换为SQL Server中的varchar

select convert(varchar, 19040220000.0000000000000000000) 

我得到:

消息8115,级别16,状态5,行1个
算术溢出错误转换数字数据类型为varchar 。

我试图让第一数量:

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

但是这似乎并没有工作,要么(同样的错误消息)。实际上round()似乎并没有因为某些原因而对该数字产生影响。我该怎么办?谢谢。

+0

难道你需要设置一个长度为VARCHAR即,使用varchar(64)? – 2012-01-13 15:50:27

回答

4

如果不指定您的varchar,则默认为30个字符CONVERT操作的情况下的长度。

这不足以保存38位十进制数。因此,在CONVERT声明中给出您的varchar合适的长度!

试试这个:

select convert(varchar(40), 19040220000.0000000000000000000) 
0

您需要使用VARCHAR一组长度比你想要的精确度较大,即

select convert(varchar(64), 19040220000.0000000000000000000) 
相关问题