如何构建 SQL 插入查询以允许我将空白插入数字字段?

How do I build a SQL insert query that allows me to insert a blank into a numeric field?

我将 Excel 工作簿中的一些值添加到数组中。最后,我遍历数组并构建一个 sql 插入查询(使用 Excel VBA),并将值存储到数组中。

我调试了我构建的 sql 查询字符串,它显示为:

INSERT INTO RAPTOR_BG.Project_Attributes (
    P-Key,
    Contract_Currency,
    FX_Rate,
    Rate_Discount,
    Study_Award,
    BLD,
    Submitted_Date
)
VALUES (
    '1111111|7-22-2020',
    'USD',
    '0.91',
    '',
    '5-29-2019',
    '',
    '7-22-2020'
);

Rate_Discount 和 BLD 都是数字,不接受 ' '。有没有办法让 sql 接受这个空白为空?我做了一些研究,发现有些人使用 case 语句取得了成功,但我看到的所有示例都使用了变量或答案 .[=14 中找到的类似内容 (@SomeName) =]

我尝试通过执行以下操作来调整我的代码以适应我所看到的示例,但它引发了一个错误,指出 CASE 规范中的至少一个结果表达式必须是除空常量。

*insert statement from before*

VALUES (
    '1111111|7-22-2020',
    'USD',
    '0.91',
    CASE WHEN '' is null then null end,
    '5-29-2019',
    '',
    '7-22-2020'
);

我将成为 运行 我在数百个工作簿上的代码,其中一些值将是空白的,而另一些则不是,所以我不一定要硬编码 null 而不是 ' ' .有没有办法解决让数字字段接受空白作为空值的问题?

好的,我想通了。请在下面找到答案。

INSERT INTO RAPTOR_BG.Project_Attributes (
    P-Key,
    Contract_Currency,
    FX_Rate,
    Rate_Discount,
    Study_Award,
    BLD,
    Submitted_Date
)
VALUES (
    '1111111|7-22-2020',
    'USD',
    '0.91',
    CASE WHEN '' is null then 0 end,
    '5-29-2019',
    CASE WHEN '' is null then 0 end,
    '7-22-2020'
);