Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 关于聚合函数_Sql_Sql Server 2005 - Fatal编程技术网

Sql 关于聚合函数

Sql 关于聚合函数,sql,sql-server-2005,Sql,Sql Server 2005,在SQL Server 2005中,当对数据类型为varchar(max)的列使用聚合函数时,为什么max、min、count聚合函数不能提供正确的输出 请告诉我朋友如果您希望最小值或最大值基于存储在VARCHAR(MAX)列中的十进制值,则必须先将此列转换为十进制。例如: SELECT MIN( CAST(val AS DECIMAL(28,4) ) AS min_val FROM your_table 仅当此VARCHAR列仅包含数值时,此操作才有效。在这种情况下,最好首先将此列的

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


请告诉我朋友

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

SELECT
  MIN( CAST(val AS DECIMAL(28,4) ) AS min_val
FROM
  your_table
仅当此VARCHAR列仅包含数值时,此操作才有效。在这种情况下,最好首先将此列的类型更改为适当的十进制类型。那你就不必一开始就投了


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

您能给我们展示一些代码来说明您的观点吗?但它们确实提供了正确的输出(至少每次我使用它们时都是如此)。为什么您认为结果不正确?我认为该字段的最大值为100,最小值为16.355,行数为46。当我执行最小值时,它给出100,最大值为63.457,计数时,它只给出45。如果该字段有一个或多个值,则可能会出现这些问题。@Dhandshands您可以非常感谢我通过检查复选标记。