【问题标题】:How to convert varchar value to numeric如何将varchar值转换为数字
【发布时间】:2011-06-13 08:13:00
【问题描述】:

我在数据库中有一个列是 varchar。如何转换为整数以获得水晶报表中的总和。使用存储过程时是否可以将 varchar 转换为数字......

【问题讨论】:

  • 为什么它首先存储为varchar?
  • 另外,您使用的是什么数据库。请添加标签。

标签: c# database crystal-reports


【解决方案1】:

不使用 Try/Catch 在 C# 中执行此操作:

int value = 0;
if (Int32.TryParse("string to parse", out value))
{
    // Value parsed correctly        
}
else
{
    // Could not be parsed.
}

如果可能的话,您最好在数据库查询中执行此操作。也正如其他人所建议的那样,为什么将数字存储在 varchar 字段中?

编辑

Transact SQLPL/SQL 方言都支持CAST 函数。

您可以在查询中使用 - 尽管请注意您使用的实际数据库中可能存在细微差别。

SELECT ..., CAST(field_name AS int), ... FROM table_name ...

感谢 Anjay 的最有价值的贡献。

【讨论】:

  • 这里的问题是针对水晶报告而不是 C# 代码。我们需要一些存储过程或 SQL
  • 问题被标记为 C#,我建议在数据库中进行转换可能是更好的方法。该问题仍未用数据库类型标记,因此在不知道目标数据库的情况下很难提出建议:)
  • 我最初发布答案时不是,但我现在已经更新了。谢谢。
【解决方案2】:

应该这样做:

SELECT SUM(CONVERT(INT , varchar_column)) FROM [test]

【讨论】:

  • 值不能转换怎么办?这会抛出异常吗?
【解决方案3】:

您在存储过程或视图中使用以下函数,并在将执行计算部分的 Crystal 报表中使用它们。

SELECT CAST(YourVarcharCol AS INT) FROM Table
or

SELECT CONVERT(INT, YourVarcharCol) FROM Table

http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx

【讨论】:

  • 为什么要投反对票?可以添加评论为什么它被否决?它应该可以帮助我和其他人知道原因。
猜你喜欢
  • 2013-09-08
  • 1970-01-01
  • 2011-12-31
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多