gpt4 book ai didi

sql-server - 可以在 VALUES 中没有行的情况下插入吗?

转载 作者:行者123 更新时间:2023-12-02 20:17:09 24 4
gpt4 key购买 nike

我知道这个问题可能有点深奥,但是是否可以创建一个带有没有值的 VALUES 子句的 INSERT 语句?

INSERT myTable
(col1, col2)
VALUES
<no values>

我正在以编程方式生成 INSERT 语句,我可以通过进行 IF 检查来解决这个问题,该检查不会生成 INSERT,但我我很好奇这个 VALUES 语句可以被认为是一个集合。并且集合可能是空的...

文档中没有提到任何关于空集的内容: Table Value Constructor

最佳答案

没有简单的语法解决方案,但您可以通过使行生成器稍微复杂一些来解决该问题。

您可以重写生成行的部分,以将 VALUES 构造函数替换为一组

SELECT <i>values</i>
UNION ALL
SELECT <i>values</i>
UNION ALL
...

包括这种强制性的选择:

SELECT NULL, NULL, ... WHERE 1 <> 1

无论是在开头还是在结尾。该强制性项目不会产生任何行,如果它恰好是唯一的元素,则整个联合将不会产生任何行,并且 INSERT 语句将不会插入任何内容。

如果由于某种原因 VALUES 构造函数更可取,您可以修改生成器以包含 (NULL, NULL, ...) 项并围绕构造函数包装查询:

INSERT INTO
<i>target_table</i> (<i>target_columns</i>)
SELECT
*
FROM
(VALUES
(...),
...
(NULL, ...) -- obligatory element
) AS v (<i>column_names</i>)
WHERE
<i>some_of_the_columns</i> IS NOT NULL
;

其中 some_of_the_columns 应从永远无法生成 NULL 的列中选择。同样,如果 (NULL, ...) 行恰好是 VALUES 中唯一生成的行,则生成的查询将不会插入任何内容。

关于sql-server - 可以在 VALUES 中没有行的情况下插入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com