Microsoft SQL Server中MIN和MAX函数结果异常问题求助
问题原因及解决方法
你的问题核心是compression_ratio字段的类型错误:该字段应该是字符串类型(如varchar/nvarchar),而非数值类型(float/decimal等)。
SQL Server对字符串执行MIN/MAX函数时,会按字符的ASCII码顺序排序,而非数值大小。比如字符串"10"的首字符'1'的ASCII码小于'9',所以会被判定为比"9.6"更小的值,最终出现MIN返回10、MAX返回9.6这种不符合数值逻辑的结果。
解决方法
计算MIN/MAX前,先将字段转换为数值类型:
SELECT MIN(CAST(compression_ratio AS DECIMAL(10,2))) AS minimum_cr, MAX(CAST(compression_ratio AS DECIMAL(10,2))) AS maximum_cr FROM dbo.C4m3practice
如果字段中存在无法转换为数值的无效内容,使用TRY_CAST避免报错(无效值会被视为NULL,不参与计算):
SELECT MIN(TRY_CAST(compression_ratio AS DECIMAL(10,2))) AS minimum_cr, MAX(TRY_CAST(compression_ratio AS DECIMAL(10,2))) AS maximum_cr FROM dbo.C4m3practice
内容的提问来源于stack exchange,提问作者KronikusGladnikus
相关产品推荐
相关产品推荐

