首页 > 解决方案 > 如何构建允许我在数字字段中插入空白的 SQL 插入查询?

问题描述

我有一些来自我要添加到数组中的 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 语句取得了成功,但我看到的所有示例都使用变量或类似的东西 (@SomeName) 在这里的答案中找到。

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

*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 而不是“”。有没有办法让数字字段接受空白为空?

标签: sqlexcelsql-insert

解决方案


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

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'
);

推荐阅读