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

如何使用SELECT INTO语句生成特定类型的NULL值?

如何通过SELECT INTO创建特定类型的NULL值

直接写NULL AS [DateFixed]的问题在于,SQL Server会自动推断这个列的数据类型,但结果可能不是你需要的(比如可能是int或者varchar),而你后续要用来填充SysUtcDateTime()的结果,所以得明确指定NULL的目标类型,以下是几种可行的方法:

  • 用CAST/CONVERT强制转换NULL的类型
    这是最直观的方式,直接把NULL转换成你需要的类型(比如datetime2,和SysUtcDateTime()的返回类型匹配):

    SELECT
        Thing.Id,
        Thing.SomeValue AS [BadValue],
        CAST(NULL AS datetime2) AS [DateFixed]
    INTO ThingValueFixBackup
    FROM Thing
    WHERE SomeValue IS WRONG SOMEHOW;
    
  • 用CASE语句绑定目标函数的类型
    通过一个永远不成立的条件,让SQL Server根据SysUtcDateTime()的类型来定义列,实际返回NULL:

    SELECT
        Thing.Id,
        Thing.SomeValue AS [BadValue],
        CASE WHEN 1=0 THEN SysUtcDateTime() ELSE NULL END AS [DateFixed]
    INTO ThingValueFixBackup
    FROM Thing
    WHERE SomeValue IS WRONG SOMEHOW;
    
  • 用NULLIF匹配目标类型
    利用NULLIF函数的特性,传入两个相同的SysUtcDateTime()值,返回NULL的同时让列类型继承函数的返回类型:

    SELECT
        Thing.Id,
        Thing.SomeValue AS [BadValue],
        NULLIF(SysUtcDateTime(), SysUtcDateTime()) AS [DateFixed]
    INTO ThingValueFixBackup
    FROM Thing
    WHERE SomeValue IS WRONG SOMEHOW;
    

核心思路就是让SQL Server明确知道这个NULL列的目标数据类型,避免自动推断带来的后续类型兼容问题,其中CAST的方式最容易理解和维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:18:23