gpt4 book ai didi

IF 子句的 SQL 计算

转载 作者:行者123 更新时间:2023-12-02 15:45:49 27 4
gpt4 key购买 nike

如果这不合适,我们深表歉意,但实际上这是“为什么”而不是“如何”。不确定这是否合适,但不知道更好的地方可以询问,而且我不知道如何用谷歌来表达我正在寻找的东西。

    IF 'hell' = 'freezing over'
BEGIN
SELECT log(0)
END

看看那句话。不存在 IF 子句成立的世界。如果我尝试运行它,我希望 SQL 跳过 IF 子句并移至末尾。相反,我得到:

An invalid floating point operation occurred.

这很奇怪。所以我想这就是 SQL 的工作方式。除了...

    IF 'hell' = 'freezing over'
BEGIN
SELECT 1/0
END

这里没有错误。 IF 子句中的语句仍应生成错误。谁能解释一下为什么这种情况没有发生?

这是在调试大量 SQL 计算时出现的,其中 EXP(SUM(LOG())) 用于在 if 子句中累积数据。我可以更改代码来阻止这种情况再次发生,但为什么它会评估 IF 子句中不满足条件的内容。

干杯。

编辑:额外的娱乐。试着抓?噗嗤

    IF 1=2
BEGIN
BEGIN TRY
SELECT SQRT(-1)
END TRY
BEGIN CATCH
END CATCH
END

非数学:

    IF 1=2
BEGIN
SELECT SUBSTRING('hello',-1,-1)
END

最佳答案

我的猜测是,由于constant-foldinglog(0) 被过早地有效评估。而 1/0 则不然,要么是因为其基数估计,要么更可能是因为 ANSI_WARNINGS 设置将影响除以零的所需结果(溢出与 NULL)。

关于IF 子句的 SQL 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703805/

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