【问题标题】:Convert long decimal or float to varchar in SQL Server在 SQL Server 中将 long decimal 或 float 转换为 varchar
【发布时间】:2012-01-13 15:47:24
【问题描述】:

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

select convert(varchar, 19040220000.0000000000000000000)

我明白了:

消息 8115,第 16 级,状态 5,第 1 行
将数值转换为数据类型 varchar 时出现算术溢出错误。

我试着先四舍五入:

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

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

【问题讨论】:

  • 你不需要为varchar设置一个长度,即。使用 varchar(64)?

标签: sql-server decimal varchar


【解决方案1】:

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

这不足以容纳您的 38 位小数。所以在CONVERT 语句中给你的varchar 一个合适的长度!!

试试这个:

select convert(varchar(40), 19040220000.0000000000000000000)

【讨论】:

    【解决方案2】:

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

    select convert(varchar(64), 19040220000.0000000000000000000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      相关资源
      最近更新 更多