【问题标题】:About Aggregate Functions关于聚合函数
【发布时间】:2015-07-06 12:14:11
【问题描述】:

为什么 maxmincount 在 SQL Server 2005 中针对数据类型为 varchar(max) 的列使用时聚合函数不提供正确的输出?

请朋友们告诉我

【问题讨论】:

  • 你能给我们看一些代码来说明你的观点吗?
  • 但它们确实提供了正确的输出(至少每次我使用它们时)。为什么你认为结果不正确?
  • 我在该字段中的最大值为 100,最小值为 16.355,行数为 46。当我执行最小值时,它给出 100,最大值给出 63.457,计数给出45 only..如果该字段具有一个或多个相同的值,则可能会出现这些问题..?

标签: sql sql-server-2005


【解决方案1】:

如果您希望最小值或最大值基于 VARCHAR(MAX) 列中存储的十进制值,则必须先将此列转换为 DECIMAL。例如:

SELECT
  MIN( CAST(val AS DECIMAL(28,4) ) AS min_val
FROM
  your_table

这仅在此 VARCHAR 列仅包含数值时才有效。在这种情况下,最好首先将此列的类型更改为适当的 DECIMAL 类型。那么你一开始就不必 CAST 了。

在 VARCHAR 列上选择 MIN 或 MAX 将选择 lexicographical 最小值/最大值,因此会考虑字符串的长度。

【讨论】:

  • @DhandsDhands 你可以通过勾选复选标记来感谢我。
猜你喜欢
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
相关资源
最近更新 更多