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

如何保留BIT类型字段的NULL值并转换至INT类型字段?

解决办法

问题出在BIT类型到INT类型的隐式转换环节,尽管你的CASE语句逻辑上指定返回NULL,但数据库的隐式转换规则可能将BIT类型的NULL意外转为0。通过显式转换字段类型即可确保NULL值被正确保留,以下是具体方案:

方案一:直接显式转换赋值

无需额外CASE判断,直接将BIT字段转换为INT类型赋值,NULL会自动保留:

SET testColumn2 = CAST(ref.testColumn1 AS INT);

若使用支持CONVERT语法的数据库(如SQL Server),也可以写成:

SET testColumn2 = CONVERT(INT, ref.testColumn1);

方案二:带CASE逻辑的显式转换

如果需要保留CASE分支的其他判断逻辑,只需在返回BIT值的分支里显式转换为INT:

SET
    testColumn2 = CASE 
        WHEN ref.testColumn1 IS NULL THEN NULL 
        ELSE CAST(ref.testColumn1 AS INT) 
    END;

原理说明

显式类型转换会强制数据库按照指定的目标类型处理数据,BIT类型的NULL转换为INT类型时仍会保持NULL状态;而依赖隐式转换时,部分数据库的规则会将BIT类型的NULL视为0处理,这正是你遇到问题的原因。

内容的提问来源于stack exchange,提问作者Jānis Kļaviņš

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:23:14