SQL Server如何处理Numerator和Denominator同时为0时的列值清除需求
实现方法
分为查询时临时转换和直接更新表数据两种场景:
场景1:仅查询时输出预期结果,不修改原表数据
你之前的CASE WHEN思路是正确的,只需要分别对两个字段做判断即可,注意数值类型的0不要加单引号包裹:
SELECT ID, CASE WHEN Numerator = 0 AND Denominator = 0 THEN NULL ELSE Numerator END AS Numerator, CASE WHEN Numerator = 0 AND Denominator = 0 THEN NULL ELSE Denominator END AS Denominator FROM 你的实际表名
场景2:直接修改原表存储的内容
如果需要把表中符合条件的行的两个字段直接设为NULL,可以用UPDATE语句:
UPDATE 你的实际表名 SET Numerator = NULL, Denominator = NULL WHERE Numerator = 0 AND Denominator = 0
常见问题说明
你之前语法出错大概率是判断条件里给0加了单引号,Numerator = '0'是字符串匹配逻辑,如果字段本身是int、decimal等数值类型,类型不匹配就会执行报错或者判断失效。
SQL Server中NULL值输出时会显示为空白,和你给出的预期效果完全一致。
内容的提问来源于stack exchange,提问作者Logan
相关产品推荐
相关产品推荐

