You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server函数问题:将负数转为NULL/零却全部变为零的求助

问题分析与修正

你的函数逻辑存在错误,导致非负数无法正确返回原值:

  • 当输入@value为非负数时,你声明了@days变量但未给它赋值,直接返回的是未初始化的变量(SQL Server中默认值为NULL),这就是结果不符合预期的原因。

修正方案

方案1:负数转为0,正数保留原值

CREATE FUNCTION planning.FN_test_return_zero_incaseof_negative_value (@value AS INT)
RETURNS INT
BEGIN
    RETURN CASE WHEN @value < 0 THEN 0 ELSE @value END
END
GO

方案2:负数转为NULL,正数保留原值

CREATE FUNCTION planning.FN_test_return_zero_incaseof_negative_value (@value AS INT)
RETURNS INT
BEGIN
    RETURN CASE WHEN @value < 0 THEN NULL ELSE @value END
END
GO

原函数错误点说明

原函数仅在@value < 0时返回0,但非负数分支没有将输入值传递给返回变量,直接返回未赋值的@days,导致返回NULL(若你看到正数被转为0,大概率是外部查询对NULL做了额外处理)。

内容的提问来源于stack exchange,提问作者jacktheripper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:09:23